stream.finished()
Resolves when a stream is no longer readable, writable, or has errored.
Syntax
await finished(stream[, options]) Parameters
| Name | Type | Required | Description |
|---|---|---|---|
stream | Readable | Writable | Yes | The stream to observe to completion. |
options | object | No | `{ error, readable, writable }` flags to tune which conditions end the wait. |
Returns
Promise<void> — Resolves on completion; rejects if the stream errors.
Examples
import { createReadStream } from 'node:fs';
import { finished } from 'node:stream/promises';
const rs = createReadStream('big.csv');
rs.resume(); // drain it
await finished(rs);
console.log('fully read');
Output
fully read
import { finished } from 'node:stream/promises';
try {
await finished(someStream);
} catch (err) {
console.error('stream error:', err.code);
}
Output
stream error: ECONNRESET
Notes
Use it to know when a stream you do not control (e.g. piped
elsewhere) is done. It does not consume data, so the stream must
still be drained. Prefer `pipeline` when you also need to move data.