You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							55 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							55 lines
						
					
					
						
							1.7 KiB
						
					
					
				"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); | 
						|
    } | 
						|
}; | 
						|
};
 | 
						|
 |