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.
		
		
		
		
		
			
		
			
				
					
					
						
							56 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							56 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);
 | |
|     }
 | |
| };
 | |
| };
 |