Try to follow the assumed "contract"/"api" in terms of stream events: events (only `close` after `error`, nothing after `close`, only `error` or `close` after destroy) - [ ] don't emit finish on error (https://github.com/nodejs/node/pull/28979) - [ ] document when destroy emits events (https://github.com/nodejs/node/pull/28970) - [ ] don't emit open after destroy (https://github.com/nodejs/node/pull/28765) - [ ] don't emit after 'error' (https://github.com/nodejs/node/pull/28708) - [ ] don't emit finish on error (https://github.com/nodejs/node/pull/28979) - [ ] eos premature close (https://github.com/nodejs/node/pull/28720)