- From: Andy Edwards <notifications@github.com>
- Date: Mon, 28 Oct 2024 08:44:36 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/issues/1329@github.com>
### What is the issue with the Streams Standard? It seems like the standard doesn't provide a simple way to guarantee resources are cleaned up after a ReadableStream is closed for any reason. I mean, I could make a shared `cleanup` function, but I have to call it from three different places: ```ts function cleanup() { // free resources } return new ReadableStream({ async start(controller) { try { ... } catch (error) { cleanup() } }, async pull(controller) { try { ... } catch (error) { cleanup() } }, async cancel(controller) { cleanup() } }) ``` I think it should also accept a `closed` method on `underlyingSource` that will be called after the stream has closed for any reason: ```ts return new ReadableStream({ async start(controller) { ... }, async pull(controller) { ... }, async closed() { // cleanup code }, }) ``` We can do something like this in userland, but if we leave it up to userland, there's a lot more risk that developers will miss one of the three cases where they need to cleanup. If the API provides a `closed` method itself, then there will be less resource leaks in the wild. -- Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/issues/1329 You are receiving this because you are subscribed to this thread. Message ID: <whatwg/streams/issues/1329@github.com>
Received on Monday, 28 October 2024 15:44:40 UTC