function internal.finished
Usage in Deno
```typescript import { internal } from "node:node__stream.d.ts"; ```
finished(stream: ReadableStream
| WritableStream
| ReadWriteStream,options: FinishedOptions,callback: (err?: ErrnoException | null) => void,): () => void
A readable and/or writable stream/webstream.
A function to get notified when a stream is no longer readable, writable
or has experienced an error or a premature close event.
```js
import { finished } from 'node:stream';
import fs from 'node:fs';
const rs = fs.createReadStream('archive.tar');
finished(rs, (err) => {
if (err) {
console.error('Stream failed.', err);
} else {
console.log('Stream is done reading.');
}
});
rs.resume(); // Drain the stream.
```
Especially useful in error handling scenarios where a stream is destroyed
prematurely (like an aborted HTTP request), and will not emit `'end'` or `'finish'`.
The `finished` API provides [`promise version`](https://nodejs.org/docs/latest-v22.x/api/stream.html#streamfinishedstream-options).
`stream.finished()` leaves dangling event listeners (in particular `'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been
invoked. The reason for this is so that unexpected `'error'` events (due to
incorrect stream implementations) do not cause unexpected crashes.
If this is unwanted behavior then the returned cleanup function needs to be
invoked in the callback:
```js
const cleanup = finished(rs, (err) => {
cleanup();
// ...
});
```
options: FinishedOptions
() => void
A cleanup function which removes all registered listeners.