| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | "use strict";module.exports =function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {var util = require("./util");var tryCatch = util.tryCatch;Promise.method = function (fn) {    if (typeof fn !== "function") {        throw new Promise.TypeError("expecting a function but got " + util.classString(fn));    }    return function () {        var ret = new Promise(INTERNAL);        ret._captureStackTrace();        ret._pushContext();        var value = tryCatch(fn).apply(this, arguments);        var promiseCreated = ret._popContext();        debug.checkForgottenReturns(            value, promiseCreated, "Promise.method", ret);        ret._resolveFromSyncValue(value);        return ret;    };};Promise.attempt = Promise["try"] = function (fn) {    if (typeof fn !== "function") {        return apiRejection("expecting a function but got " + util.classString(fn));    }    var ret = new Promise(INTERNAL);    ret._captureStackTrace();    ret._pushContext();    var value;    if (arguments.length > 1) {        debug.deprecated("calling Promise.try with more than 1 argument");        var arg = arguments[1];        var ctx = arguments[2];        value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)                                  : tryCatch(fn).call(ctx, arg);    } else {        value = tryCatch(fn)();    }    var promiseCreated = ret._popContext();    debug.checkForgottenReturns(        value, promiseCreated, "Promise.try", ret);    ret._resolveFromSyncValue(value);    return ret;};Promise.prototype._resolveFromSyncValue = function (value) {    if (value === util.errorObj) {        this._rejectCallback(value.e, false);    } else {        this._resolveCallback(value, true);    }};};
 |