text: "use strict";
  
  const actual = [];
  const expected = ["foo", "bar", "baz", "xyz"];
  
  const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
  
  async function* test() {
    yield await delay(0).then(() => actual.push("foo"));
    await delay(0).then(() => actual.push("bar"));
    yield delay(0).then(() => actual.push("baz"));
    actual.push("xyz");
  }
  
  async function main() {
    const g = test();
    g.next();
    g.next();
    await g.next();
  }
  
  return main().then(() => {
    assert.deepEqual(actual, expected);
  });
  