•
Readable, Writable, Duplex and Transform, and which one a job needs
•
attaching a 'data' listener starts the flow; read() pulls on demand
•
write() returning false means stop producing until 'drain' fires
•
the buffered amount that triggers backpressure, counted in bytes or, in object mode, in items
•
a failed source leaves the destination open, which is a file descriptor leak
•
stream.pipeline destroys every stage on failure and reports the first error
•
object mode carries arbitrary values instead of bytes and counts items toward the watermark
•
_transform may push zero or many chunks per input, and _flush emits the tail
•
for await (const chunk of readable) consumes with backpressure applied automatically
•
Readable.from turns any iterable or async generator into a stream
•
end() finishes the write and flushes; destroy() tears down immediately and discards buffered data
•
'end' when reading finishes, 'finish' when writing flushes, 'close' after teardown
•
a readable is one-shot, so a second consumer attached after the data flowed gets nothing