tor-browser

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

yield-star-promise-not-unwrapped.js (1000B)


      1 // |reftest| async
      2 // Copyright (C) 2022 Kevin Gibbons. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 esid: sec-generator-function-definitions-runtime-semantics-evaluation
      7 description: >
      8  `yield*` in an async generator does not await promises returned by a manually implemented async iterator.
      9 flags: [async]
     10 features: [async-iteration]
     11 ---*/
     12 
     13 var innerPromise = Promise.resolve("unwrapped value");
     14 
     15 var asyncIter = {
     16  [Symbol.asyncIterator]() {
     17    return this;
     18  },
     19  next() {
     20    return {
     21      done: false,
     22      value: innerPromise,
     23    };
     24  },
     25  get return() {
     26    throw new Test262Error(".return should not be accessed");
     27  },
     28  get throw() {
     29    throw new Test262Error(".throw should not be accessed");
     30  },
     31 };
     32 
     33 async function* f() {
     34  yield* asyncIter;
     35 }
     36 
     37 f()
     38  .next()
     39  .then(v => {
     40    assert.sameValue(v.value, innerPromise, "yield* should not unwrap promises from manually-implemented async iterators");
     41  })
     42  .then($DONE, $DONE)