| Index: src/js/promise.js
|
| diff --git a/src/js/promise.js b/src/js/promise.js
|
| index bcf826a10151d48a498d40e72f418805a5022f18..719ecdc48fab72a03ed2d79293eb11a6917d64c1 100644
|
| --- a/src/js/promise.js
|
| +++ b/src/js/promise.js
|
| @@ -268,6 +268,19 @@ function PromiseRejected(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);
|
| +}
|
| +
|
| // Multi-unwrapped chaining with thenable coercion.
|
|
|
| function PromiseThen(onResolve, onReject) {
|
| @@ -451,6 +464,7 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [
|
| "promise_reject", PromiseReject,
|
| "promise_resolve", PromiseResolve,
|
| "promise_then", PromiseThen,
|
| + "promise_create_rejected", PromiseCreateRejected
|
| ]);
|
|
|
| // This allows extras to create promises quickly without building extra
|
| @@ -470,6 +484,10 @@ utils.Export(function(to) {
|
| to.PromiseChain = PromiseChain;
|
| to.PromiseDeferred = PromiseDeferred;
|
| to.PromiseResolved = PromiseResolved;
|
| +
|
| + to.PromiseCreateRejected = PromiseCreateRejected;
|
| + to.PromiseCreateResolved = PromiseCreateResolved;
|
| + to.PromiseThen = PromiseThen;
|
| });
|
|
|
| })
|
|
|