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 }