tor-browser

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

await-using-async-generators.js (910B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 {
      6  const values = [];
      7  let res;
      8  const suspend = new Promise((resolve, reject) => {
      9    res = resolve;
     10  });
     11  async function* gen() {
     12    yield 1;
     13    yield await suspend;
     14    yield 3;
     15    await using d = {
     16      [Symbol.asyncDispose]() {
     17        values.push(6);
     18      }
     19    }
     20    await using d2 = {
     21      [Symbol.asyncDispose]() {
     22        values.push(5);
     23      }
     24    }
     25    yield 4;
     26  }
     27  async function testDisposalInAsyncGenerator() {
     28    const g = gen();
     29    values.push((await g.next()).value);
     30    res(2);
     31    values.push((await g.next()).value);
     32    values.push((await g.next()).value);
     33    values.push((await g.next()).value);
     34    await g.next();
     35  }
     36  testDisposalInAsyncGenerator();
     37  drainJobQueue();
     38  assertArrayEq(values, [1, 2, 3, 4, 5, 6]);
     39 }