The source code looks very similar: pump, pipe. Why would I use one instead of the other? Is one simply a better version of the other?
Stream.pipe is now the preferred method apparently since 0.3.x so try and use that when possible
sources:
https://groups.google.com/forum/?fromgroups#!topic/nodejs/FwdDQvAf4xM
https://stackoverflow.com/a/4591335/424851
There are two significant difference between the two. The first is that the util.pump
method can operate on two "stream-like" objects, while the Stream.prototype.pipe
assumes that they are stream objects. The second is because of that assumption, the pipe
can be chained ( streamA | streamB | streamC
) while the former can't (easily).
UPDATE: 28/04/2020
It's worth to say that pump
is only necessary for Node.js 8.x or earlier, as for Node.js 10.x or later version, pipeline is introduced to replace for pump
. This is a module method to pipe between streams forwarding errors and properly cleaning up and provide a callback when the pipeline is complete.