resolve-ignores-late-rejection-deferred.js (1020B)
1 // |reftest| async 2 // Copyright (C) 2019 Leo Balter, 2020 Rick Waldron. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 description: > 7 Resolved promises ignore rejections through deferred invocation of the 8 provided resolving function 9 esid: sec-promise.any 10 info: | 11 5. Let result be PerformPromiseAny(iteratorRecord, C, promiseCapability). 12 13 Runtime Semantics: PerformPromiseAny 14 15 8. Repeat 16 ... 17 r. Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], rejectElement »). 18 19 flags: [async] 20 features: [Promise.any, arrow-function] 21 ---*/ 22 23 var resolver = { 24 then(resolve) { 25 new Promise((resolve) => resolve()) 26 .then(() => resolve(42)); 27 } 28 }; 29 var lateRejector = { 30 then(resolve, reject) { 31 new Promise((resolve) => resolve()) 32 .then(() => { 33 resolve(9); 34 reject(); 35 }); 36 } 37 }; 38 39 Promise.any([resolver, lateRejector]) 40 .then(resolution => { 41 assert.sameValue(resolution, 42); 42 }).then($DONE, $DONE);