because `require('stream').Through` pretty much does everything through2 does...
new Transform({
objectMode: true,
transform(chunk, enc, cb) {},
flush(cb) {}
});
Is there something through2 inherently does that this doesn't?
The internals provide... I mean, you can either inherit from the template streams, or you can use streams that actually serve a purpose.. Readable handles backpressure by default, not sure why you'd want from2 or through2 ... end-of-stream comes down to knowing when to listen for 'end' (readable/through) and 'finish' (writable).
pump actually seems to serve a purpose... as does the likes of split2, and others... but the most basic readable/transform/writable bases are covered in the box, and it's really better to use them than bring in potentially a bunch of extra dependencies.
I agree with you that it may not make that much sense to use through2.
Generally I don't really mind pulling in small dependencies, even if they make stuff only a bit nicer. As long as the dependencies are easy replaceable and their code is understandable.