tor-browser

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

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);