tor-browser

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

await-using-fallbacks.js (1122B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 {
      6  let called = false;
      7  let calledSync = false;
      8  async function testCallsAsyncDispose() {
      9    await using x = {
     10      [Symbol.asyncDispose]() {
     11        called = true;
     12      },
     13      [Symbol.dispose]() {
     14        calledSync = true;
     15      }
     16    }
     17  }
     18  testCallsAsyncDispose();
     19  drainJobQueue();
     20  assertEq(called, true);
     21  assertEq(calledSync, false);
     22 }
     23 
     24 {
     25  const disposed = [];
     26  async function testCallsSyncDispose() {
     27    await using x = {
     28      [Symbol.dispose]() {
     29        disposed.push(1);
     30      }
     31    }
     32 
     33    await using y = {
     34      [Symbol.asyncDispose]: undefined,
     35      [Symbol.dispose]() {
     36        disposed.push(2);
     37      }
     38    }
     39 
     40    await using z = {
     41      [Symbol.asyncDispose]: null,
     42      [Symbol.dispose]() {
     43        disposed.push(3);
     44      }
     45    }
     46  }
     47  testCallsSyncDispose();
     48  drainJobQueue();
     49  assertArrayEq(disposed, [3, 2, 1]);
     50 }
     51 
     52 {
     53  assertThrowsInstanceOf(() => {
     54    using x = {
     55      [Symbol.asyncDispose]() {
     56      }
     57    }
     58  }, TypeError);
     59 }