@@ -47,9 +47,9 @@ function eos(stream, opts, callback) {
4747
4848 callback = once ( callback ) ;
4949
50- let readable = opts . readable ||
50+ const readable = opts . readable ||
5151 ( opts . readable !== false && isReadable ( stream ) ) ;
52- let writable = opts . writable ||
52+ const writable = opts . writable ||
5353 ( opts . writable !== false && isWritable ( stream ) ) ;
5454
5555 const onlegacyfinish = ( ) => {
@@ -59,35 +59,31 @@ function eos(stream, opts, callback) {
5959 let writableFinished = stream . writableFinished ||
6060 ( stream . _writableState && stream . _writableState . finished ) ;
6161 const onfinish = ( ) => {
62- writable = false ;
6362 writableFinished = true ;
64- if ( ! readable ) callback . call ( stream ) ;
63+ if ( ! readable || readableEnded ) callback . call ( stream ) ;
6564 } ;
6665
6766 let readableEnded = stream . readableEnded ||
6867 ( stream . _readableState && stream . _readableState . endEmitted ) ;
6968 const onend = ( ) => {
70- readable = false ;
7169 readableEnded = true ;
72- if ( ! writable ) callback . call ( stream ) ;
70+ if ( ! writable || writableFinished ) callback . call ( stream ) ;
7371 } ;
7472
7573 const onerror = ( err ) => {
7674 callback . call ( stream , err ) ;
7775 } ;
7876
7977 const onclose = ( ) => {
80- let err ;
8178 if ( readable && ! readableEnded ) {
8279 if ( ! stream . _readableState || ! stream . _readableState . ended )
83- err = new ERR_STREAM_PREMATURE_CLOSE ( ) ;
84- return callback . call ( stream , err ) ;
80+ return callback . call ( stream , new ERR_STREAM_PREMATURE_CLOSE ( ) ) ;
8581 }
8682 if ( writable && ! writableFinished ) {
8783 if ( ! isWritableFinished ( stream ) )
88- err = new ERR_STREAM_PREMATURE_CLOSE ( ) ;
89- return callback . call ( stream , err ) ;
84+ return callback . call ( stream , new ERR_STREAM_PREMATURE_CLOSE ( ) ) ;
9085 }
86+ callback . call ( stream ) ;
9187 } ;
9288
9389 const onrequest = ( ) => {
0 commit comments