| Index: src/js/promise.js
|
| diff --git a/src/js/promise.js b/src/js/promise.js
|
| index 65a8bf3f4ddf0ec598c7c0a21067dff943a5ea66..c12270996b1cf96da3aed90ba928ed49c1bfdd60 100644
|
| --- a/src/js/promise.js
|
| +++ b/src/js/promise.js
|
| @@ -293,6 +293,19 @@ function PromiseReject(r) {
|
| }
|
| }
|
|
|
| +// Shortcut Promise.reject and Promise.resolve() implementations, used by
|
| +// Async Functions implementation.
|
| +function PromiseCreateRejected(r) {
|
| + var promise = PromiseCreateAndSet(-1, r);
|
| + %PromiseRejectEvent(promise, r, false);
|
| + return promise;
|
| +}
|
| +
|
| +function PromiseCreateResolved(x) {
|
| + if (IsPromise(x) && x.constructor === GlobalPromise) return x;
|
| + return PromiseCreateAndSet(+1, x);
|
| +}
|
| +
|
| // ES#sec-promise.prototype.then
|
| // Promise.prototype.then ( onFulfilled, onRejected )
|
| // Multi-unwrapped chaining with thenable coercion.
|
| @@ -487,6 +500,8 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [
|
| "promise_reject", RejectPromise,
|
| "promise_resolve", FulfillPromise,
|
| "promise_then", PromiseThen,
|
| + "promise_create_rejected", PromiseCreateRejected,
|
| + "promise_create_resolved", PromiseCreateResolved
|
| ]);
|
|
|
| // This allows extras to create promises quickly without building extra
|
| @@ -506,6 +521,10 @@ utils.Export(function(to) {
|
| to.PromiseChain = PromiseChain;
|
| to.PromiseDefer = PromiseDefer;
|
| to.PromiseAccept = PromiseAccept;
|
| +
|
| + to.PromiseCreateRejected = PromiseCreateRejected;
|
| + to.PromiseCreateResolved = PromiseCreateResolved;
|
| + to.PromiseThen = PromiseThen;
|
| });
|
|
|
| })
|
|
|