@mafintosh said most of this, I just wrote it down ## how to destroy/end streams in node >= 0.10 - usually you call `.destroy()` if it has `.destroy` - if it doesnt have `.destroy` you are out of luck and the stream should upgrade to use e.g. newer `through2` - in request you call `.abort()` (this should get fixed to use `.destroy()`) - `.end()` tries to end the stream gracefully ### what about close - usually no `.close` method exists except in FD backed streams (usually only `fs`). usually you would never call `.close()` ### what about events - `finish` event is emitted when a stream ends nicely (e.g. `stream.end()`) - `close` and `error` events are emitted when a stream ends due to failure (e.g. `stream.destroy()`) - `end` is emitted when a readable stream has no more data - `end` in streams2 behaves more like a flush event, it only gets emitted when the data has been read from the readable