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