Skip to content

Commit d7f01ee

Browse files
oaleynikZJONSSON
andauthoredApr 14, 2024··
fix: use pipeline to propagate errors across all piped streams (#288)
Co-authored-by: Ziggy Jonsson <ziggy.jonsson.nyc@gmail.com>
1 parent 7c4604e commit d7f01ee

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed
 

‎lib/parse.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var NoopStream = require('./NoopStream');
77
var BufferStream = require('./BufferStream');
88
var parseExtraField = require('./parseExtraField');
99
var parseDateTime = require('./parseDateTime');
10+
var pipeline = Stream.pipeline;
1011
var parseBuffer = require('./parseBuffer');
1112

1213
var endDirectorySignature = Buffer.alloc(4);
@@ -187,13 +188,18 @@ Parse.prototype._readFile = function () {
187188
}
188189

189190
return new Promise(function(resolve, reject) {
190-
self.stream(eof)
191-
.pipe(inflater)
192-
.on('error',function(err) { self.emit('error',err);})
193-
.pipe(entry)
194-
.on('finish', function() {
191+
pipeline(
192+
self.stream(eof),
193+
inflater,
194+
entry,
195+
function (err) {
196+
if (err) {
197+
return reject(err);
198+
}
199+
195200
return fileSizeKnown ? resolve(fileSizeKnown) : self._processDataDescriptor(entry).then(resolve).catch(reject);
196-
});
201+
}
202+
)
197203
});
198204
});
199205
});

0 commit comments

Comments
 (0)
Please sign in to comment.