'use strict'; var callBound = require('call-bound'); var $PromiseThen = callBound('Promise.prototype.then', true); var isObject = require('../helpers/isObject'); // https://262.ecma-international.org/6.0/#sec-ispromise module.exports = function IsPromise(x) { if (!isObject(x)) { return false; } if (!$PromiseThen) { // Promises are not supported return false; } try { $PromiseThen(x); // throws if not a promise } catch (e) { return false; } return true; };