resolve-ignores-late-rejection-deferred.js (1157B)
1 // |reftest| async 2 // Copyright (C) 2020 Rick Waldron, 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.race 10 info: | 11 Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve). 12 13 PerformPromiseRace 14 15 Repeat 16 ... 17 Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »). 18 19 flags: [async] 20 features: [arrow-function] 21 includes: [promiseHelper.js] 22 ---*/ 23 24 let sequence = [1]; 25 let lateRejector = { 26 then(resolve, reject) { 27 return new Promise((resolve) => { 28 sequence.push(3); 29 resolve(); 30 sequence.push(4); 31 }).then(() => { 32 sequence.push(5); 33 resolve(9); 34 sequence.push(6); 35 reject(); 36 sequence.push(7); 37 }); 38 } 39 }; 40 sequence.push(2); 41 42 Promise.race([lateRejector]) 43 .then(resolution => { 44 assert.sameValue(resolution, 9); 45 assert.sameValue(sequence.length, 7); 46 checkSequence(sequence); 47 }).then($DONE, $DONE);