diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Promise/any/resolved-sequence-extra-ticks.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Promise/any/resolved-sequence-extra-ticks.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Promise/any/resolved-sequence-extra-ticks.js b/js/src/tests/test262/built-ins/Promise/any/resolved-sequence-extra-ticks.js new file mode 100644 index 0000000000..fcb54a8457 --- /dev/null +++ b/js/src/tests/test262/built-ins/Promise/any/resolved-sequence-extra-ticks.js @@ -0,0 +1,55 @@ +// |reftest| async +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-promise.any +description: Resolution ticks are set in a predictable sequence with extra then calls +info: | + Runtime Semantics: PerformPromiseAny ( iteratorRecord, constructor, resultCapability ) + + Let remainingElementsCount be a new Record { [[Value]]: 1 }. + ... + + Set remainingElementsCount.[[Value]] to remainingElementsCount.[[Value]] - 1. + If remainingElementsCount.[[Value]] is 0, then + Let error be a newly created AggregateError object. + Perform ! DefinePropertyOrThrow(error, "errors", + Property Descriptor { + [[Configurable]]: true, + [[Enumerable]]: false, + [[Writable]]: true, + [[Value]]: errors + }). + Return ? Call(promiseCapability.[[Reject]], undefined, « error »). + ... +flags: [async] +includes: [promiseHelper.js] +features: [Promise.any] +---*/ + +let sequence = []; + +let p1 = new Promise(resolve => { + resolve({}); +}); + +sequence.push(1); + +Promise.any([p1]).then((resolved) => { + sequence.push(4); + assert.sameValue(sequence.length, 4); + checkSequence(sequence, 'Expected Promise.any().then to queue second'); +}).catch($DONE); + +p1.then(() => { + sequence.push(3); + assert.sameValue(sequence.length, 3); + checkSequence(sequence, 'Expected p1.then to queue first'); +}).then(() => { + sequence.push(5); + assert.sameValue(sequence.length, 5); + checkSequence(sequence, 'Expected final then to queue last'); +}).then($DONE, $DONE); + +sequence.push(2); |