Chromium Code Reviews| Index: src/promise.js |
| diff --git a/src/promise.js b/src/promise.js |
| index 443a3b8c01a15d2d8cd4de98e4dfb10219fcb511..1724aa3f9fb51d06aa2a673f93ad48c663c9f7a5 100644 |
| --- a/src/promise.js |
| +++ b/src/promise.js |
| @@ -106,7 +106,7 @@ var lastMicrotaskId = 0; |
| var result = handler(value); |
| if (result === deferred.promise) |
| throw MakeTypeError('promise_cyclic', [result]); |
| - else if (IsPromise(result)) |
| + else if (IsUnforgedPromise(result)) |
| %_CallFunction(result, deferred.resolve, deferred.reject, PromiseChain); |
| else |
| deferred.resolve(result); |
| @@ -151,6 +151,17 @@ var lastMicrotaskId = 0; |
| return IS_SPEC_OBJECT(x) && HAS_DEFINED_PRIVATE(x, promiseStatus); |
| } |
| + IsUnforgedPromise = function IsUnforgedPromise(x) { |
|
arv (Not doing code reviews)
2015/04/17 14:32:06
Does this need to be exported?
yhirano
2015/04/30 05:05:16
Deleted.
|
| + if (!IsPromise(x)) { |
| + return false; |
| + } |
| + try { |
| + return x.then === PromiseThen; |
|
arv (Not doing code reviews)
2015/04/17 14:32:06
This needs a test to ensure that the getter is inv
arv (Not doing code reviews)
2015/04/17 14:32:06
Which section of the ES6 spec defines this? I cann
yhirano
2015/04/30 05:05:16
Deleted.
yhirano
2015/04/30 05:05:16
Deleted.
|
| + } catch (e) { |
| + return false; |
| + } |
| + } |
| + |
| PromiseCreate = function PromiseCreate() { |
| return new $Promise(PromiseNopResolver) |
| } |