3 function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
4 var util = require("./util.js");
5 var tryCatch = util.tryCatch;
7 Promise.method = function (fn) {
8 if (typeof fn !== "function") {
9 throw new Promise.TypeError("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
12 var ret = new Promise(INTERNAL);
13 ret._captureStackTrace();
15 var value = tryCatch(fn).apply(this, arguments);
17 ret._resolveFromSyncValue(value);
22 Promise.attempt = Promise["try"] = function (fn, args, ctx) {
23 if (typeof fn !== "function") {
24 return apiRejection("fn must be a function\u000a\u000a See http://goo.gl/916lJJ\u000a");
26 var ret = new Promise(INTERNAL);
27 ret._captureStackTrace();
29 var value = util.isArray(args)
30 ? tryCatch(fn).apply(ctx, args)
31 : tryCatch(fn).call(ctx, args);
33 ret._resolveFromSyncValue(value);
37 Promise.prototype._resolveFromSyncValue = function (value) {
38 if (value === util.errorObj) {
39 this._rejectCallback(value.e, false, true);
41 this._resolveCallback(value, true);