diff --git a/lib/parse.js b/lib/parse.js index c8bf7c8..20c23bf 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -7,6 +7,7 @@ var NoopStream = require('./NoopStream'); var BufferStream = require('./BufferStream'); var parseExtraField = require('./parseExtraField'); var parseDateTime = require('./parseDateTime'); +var pipeline = Stream.pipeline; var parseBuffer = require('./parseBuffer'); var endDirectorySignature = Buffer.alloc(4); @@ -187,13 +188,18 @@ Parse.prototype._readFile = function () { } return new Promise(function(resolve, reject) { - self.stream(eof) - .pipe(inflater) - .on('error',function(err) { self.emit('error',err);}) - .pipe(entry) - .on('finish', function() { + pipeline( + self.stream(eof), + inflater, + entry, + function (err) { + if (err) { + return reject(err); + } + return fileSizeKnown ? resolve(fileSizeKnown) : self._processDataDescriptor(entry).then(resolve).catch(reject); - }); + } + ) }); }); });