tor-browser

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

await-using-with-promise-subclass.js (1050B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 {
      6  const disposed = [];
      7  let promiseCalls = 0;
      8  class ExtendedPromise extends Promise {
      9    constructor(executor) {
     10      super(executor);
     11    }
     12 
     13    then(onFulfilled, onRejected) {
     14      promiseCalls++;
     15      return super.then(onFulfilled, onRejected);
     16    }
     17  }
     18  async function testAwaiUsingWithExtendedPromise() {
     19    await using x = {
     20      [Symbol.asyncDispose]: () => new ExtendedPromise((resolve) => {
     21        disposed.push(1);
     22        resolve();
     23      })
     24    }
     25    await using y = {
     26      [Symbol.asyncDispose]: () => new ExtendedPromise((resolve) => {
     27        disposed.push(2);
     28        resolve();
     29      })
     30    }
     31    await using z = {
     32      [Symbol.dispose]: () => new ExtendedPromise((resolve) => {
     33        disposed.push(3);
     34        resolve();
     35      })
     36    }
     37  }
     38  testAwaiUsingWithExtendedPromise();
     39  drainJobQueue();
     40  assertEq(promiseCalls, 2);
     41  assertArrayEq(disposed, [3, 2, 1]);
     42 }