Re: [whatwg/streams] Cancelling and exception handling async iteration of ReadableStreams (Issue #1255)

I am pretty sure we designed Web IDL's async iterator machinery this way, to make it follow JavaScript async generators. That is, if you do

```jsasync function* g() {
  await sleep(100);
  yield 1;
  await sleep(100);
  yield 2;
  await sleep(100);
  yield 3;
}

const gen = g();
console.log(await gen.next()); // { value: 1, done: false }

const p = gen.next(); // intentionally no `await`
gen.return();
console.log(await p); // { value: 2, done: false }, i.e. the ongoing processing to produce 2 is let to continue.

console.log(await gen.next()); // { value: undefined, done: true }
```

The async iterator protocol itself would allow us to do something different here, but I'm unsure if we should depart from async generator behavior...

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/issues/1255#issuecomment-1430862570
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/streams/issues/1255/1430862570@github.com>

Received on Wednesday, 15 February 2023 07:14:16 UTC