tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

resolved-sequence.js (1572B)


      1 // |reftest| async
      2 // Copyright (C) 2020 Rick Waldron. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 esid: sec-promise.any
      7 description: Resolution ticks are set in a predictable sequence
      8 info: |
      9  Runtime Semantics: PerformPromiseAny ( iteratorRecord, constructor, resultCapability )
     10 
     11  Let remainingElementsCount be a new Record { [[Value]]: 1 }.
     12  ...
     13  6.d ...
     14    ii. Set remainingElementsCount.[[value]] to remainingElementsCount.[[value]] − 1.
     15    iii. If remainingElementsCount.[[value]] is 0, then
     16      Let error be a newly created AggregateError object.
     17      Perform ! DefinePropertyOrThrow(error, "errors",
     18        Property Descriptor { [[Configurable]]:  true, [[Enumerable]]: false, [[Writable]]: true, [[Value]]: errors }).
     19      Return ThrowCompletion(error).
     20  ...
     21 flags: [async]
     22 includes: [promiseHelper.js]
     23 features: [Promise.any]
     24 ---*/
     25 
     26 var sequence = [];
     27 
     28 var p1 = new Promise(resolve => {
     29  resolve(1);
     30 });
     31 var p2 = new Promise(resolve => {
     32  resolve(2);
     33 });
     34 
     35 sequence.push(1);
     36 
     37 p1.then(function() {
     38  sequence.push(3);
     39  assert.sameValue(sequence.length, 3);
     40 checkSequence(sequence, 'Expected to be called first.');
     41 }).catch($DONE);
     42 
     43 Promise.any([p1, p2]).then(function() {
     44  sequence.push(5);
     45  assert.sameValue(sequence.length, 5);
     46  checkSequence(sequence, 'Expected to be called third.');
     47 }).then($DONE, $DONE);
     48 
     49 p2.then(function() {
     50  sequence.push(4);
     51  assert.sameValue(sequence.length, 4);
     52  checkSequence(sequence, 'Expected to be called second.');
     53 }).catch($DONE);
     54 
     55 sequence.push(2);