Re: [whatwg/streams] Shouldn't WritableStreamDefaultWriter.write() reject if underlyingSink.write calls controller.error()? (Issue #1332)

I think the motivation for this behaviour was that the user shouldn't be punished for something out of their control. In your example, `controller.error()` is called from within `write()` but its main purpose is to signal errors that happen asynchronously. The following is an example of the intended use case:
```
const stream = new WritableStream({
  start(controller) {
    this.handle = await openFile(file);
    this.handle.onerror = evt => { controller.error(new Error(evt.reason); };
  },
  write(chunk) {
    await this.handle.write(chunk);
  },
});
```
If the `onerror` event fires while a write is in progress, we don't actually know whether the write succeeded or failed (but if we also get a promise rejection then that will be returned from `writer.write()`). So returning a rejection from `writer.write()` would not be actionable.

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

Message ID: <whatwg/streams/issues/1332/2493136732@github.com>

Received on Friday, 22 November 2024 08:15:57 UTC