function isPromise(value) {
   return value
     && value.then
     && typeof value.then === 'function'
     && Object.prototype.toString.call(value) === '[object Promise]';
 }
Returns whether the value is a promise
@param {any} value - The value to check
@returns {boolean} - TRUE if the value is a promise; FALSE otherwise