Reviewers: ,
Description:
PromiseCoerce should deal with an error when getting "then".
PromiseCource(x) should return a rejected promise when accessing x.then
leads to an error.
BUG=347095
LOG=Y
Please review this at https://codereview.chromium.org/194483002/
SVN Base: git://github.com/v8/v8.git@master
Affected files (+9, -1 lines):
M src/promise.js
Index: src/promise.js
diff --git a/src/promise.js b/src/promise.js
index
8e22c315a3b140bd27afbefbb23bbca775f7e69a..f700be909264cee92f077d60c5f331613ae86aed
100644
--- a/src/promise.js
+++ b/src/promise.js
@@ -227,7 +227,15 @@ PromiseCoerce.table = new $WeakMap;
function PromiseCoerce(constructor, x) {
if (!IsPromise(x) && IS_SPEC_OBJECT(x)) {
- var then = x.then;
+ var then;
+ try {
+ then = x.then;
+ } catch(e) {
+ var deferred = %_CallFunction(constructor, PromiseDeferred);
+ PromiseCoerce.table.set(x, deferred.promise);
+ deferred.reject(e);
+ return deferred.promise;
+ }
if (typeof then === 'function') {
if (PromiseCoerce.table.has(x)) {
return PromiseCoerce.table.get(x);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.