async-disposable-stack-ccw-ops.js (888B)
1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management 2 3 load(libdir + "asserts.js"); 4 5 { 6 const g = newGlobal({ newCompartment: true }); 7 const d = g.eval(` 8 globalThis.disposed = []; 9 const d = new AsyncDisposableStack(); 10 d.use({ [Symbol.asyncDispose]: () => globalThis.disposed.push(1) }); 11 d; 12 `); 13 AsyncDisposableStack.prototype.disposeAsync.call(d); 14 drainJobQueue(); 15 assertEq(d.disposed, true); 16 assertArrayEq(g.eval("globalThis.disposed"), [1]); 17 } 18 19 { 20 const g = newGlobal({ newCompartment: true }); 21 const d = g.eval(` 22 globalThis.disposed = []; 23 const d = new AsyncDisposableStack(); 24 d.use({ [Symbol.asyncDispose]: () => globalThis.disposed.push(1) }); 25 d; 26 `); 27 nukeAllCCWs(); 28 assertThrowsInstanceOfAsync(() => AsyncDisposableStack.prototype.disposeAsync.call(d), TypeError); 29 }