exports.pump = function (readStream, writeStream, callback) {
+ var callbackCalled = false;
+
+ function call (a, b, c) {
+ if (callback && !callbackCalled) {
+ callback(a, b, c);
+ callbackCalled = true;
+ }
+ }
+
if (!readStream.pause) readStream.pause = function () {readStream.emit("pause")};
if (!readStream.resume) readStream.resume = function () {readStream.emit("resume")};
});
readStream.addListener("close", function () {
- if (callback) callback();
+ call();
});
- readStream.addListener("error", function(err) {
+ readStream.addListener("error", function (err) {
writeStream.end();
- if (callback) callback(err);
+ call(err);
+ });
+
+ writeStream.addListener("error", function (err) {
+ readStream.destroy();
+ call(err);
});
};