@@ -71,7 +71,7 @@ const WRITE_CORKED = 0b10000000000 << 18
71
71
72
72
const WRITE_NOT_ACTIVE = MAX ^ ( WRITE_ACTIVE | WRITE_WRITING )
73
73
const WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY
74
- const WRITE_NOT_FINISHING = MAX ^ WRITE_FINISHING
74
+ const WRITE_NOT_FINISHING = MAX ^ ( WRITE_ACTIVE | WRITE_FINISHING )
75
75
const WRITE_DRAINED = MAX ^ WRITE_UNDRAINED
76
76
const WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED
77
77
const WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK
@@ -110,6 +110,7 @@ const WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING
110
110
const WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE
111
111
const WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE
112
112
const WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY
113
+ const WRITE_DROP_DATA = WRITE_FINISHING | WRITE_DONE | DESTROY_STATUS
113
114
114
115
const asyncIterator = Symbol . asyncIterator || Symbol ( 'asyncIterator' )
115
116
@@ -133,6 +134,7 @@ class WritableState {
133
134
}
134
135
135
136
push ( data ) {
137
+ if ( ( this . stream . _duplexState & WRITE_DROP_DATA ) !== 0 ) return false
136
138
if ( this . map !== null ) data = this . map ( data )
137
139
138
140
this . buffered += this . byteLength ( data )
@@ -197,7 +199,7 @@ class WritableState {
197
199
const stream = this . stream
198
200
199
201
if ( ( stream . _duplexState & WRITE_FINISHING_STATUS ) === WRITE_FINISHING ) {
200
- stream . _duplexState = ( stream . _duplexState | WRITE_ACTIVE ) & WRITE_NOT_FINISHING
202
+ stream . _duplexState = stream . _duplexState | WRITE_ACTIVE
201
203
stream . _final ( afterFinal . bind ( this ) )
202
204
return
203
205
}
@@ -489,7 +491,7 @@ function afterFinal (err) {
489
491
stream . _duplexState |= DESTROYING
490
492
}
491
493
492
- stream . _duplexState &= WRITE_NOT_ACTIVE
494
+ stream . _duplexState &= WRITE_NOT_FINISHING
493
495
494
496
// no need to wait the extra tick here, so we short circuit that
495
497
if ( ( stream . _duplexState & WRITE_UPDATING ) === 0 ) this . update ( )
0 commit comments