@@ -47,9 +47,9 @@ function eos(stream, opts, callback) {
47
47
48
48
callback = once ( callback ) ;
49
49
50
- let readable = opts . readable ||
50
+ const readable = opts . readable ||
51
51
( opts . readable !== false && isReadable ( stream ) ) ;
52
- let writable = opts . writable ||
52
+ const writable = opts . writable ||
53
53
( opts . writable !== false && isWritable ( stream ) ) ;
54
54
55
55
const onlegacyfinish = ( ) => {
@@ -59,35 +59,31 @@ function eos(stream, opts, callback) {
59
59
let writableFinished = stream . writableFinished ||
60
60
( stream . _writableState && stream . _writableState . finished ) ;
61
61
const onfinish = ( ) => {
62
- writable = false ;
63
62
writableFinished = true ;
64
- if ( ! readable ) callback . call ( stream ) ;
63
+ if ( ! readable || readableEnded ) callback . call ( stream ) ;
65
64
} ;
66
65
67
66
let readableEnded = stream . readableEnded ||
68
67
( stream . _readableState && stream . _readableState . endEmitted ) ;
69
68
const onend = ( ) => {
70
- readable = false ;
71
69
readableEnded = true ;
72
- if ( ! writable ) callback . call ( stream ) ;
70
+ if ( ! writable || writableFinished ) callback . call ( stream ) ;
73
71
} ;
74
72
75
73
const onerror = ( err ) => {
76
74
callback . call ( stream , err ) ;
77
75
} ;
78
76
79
77
const onclose = ( ) => {
80
- let err ;
81
78
if ( readable && ! readableEnded ) {
82
79
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 ( ) ) ;
85
81
}
86
82
if ( writable && ! writableFinished ) {
87
83
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 ( ) ) ;
90
85
}
86
+ callback . call ( stream ) ;
91
87
} ;
92
88
93
89
const onrequest = ( ) => {
0 commit comments