@@ -156,7 +156,6 @@ describe('message stream end event', () => {
156156 ] )
157157
158158 expect ( inbound . readStatus ) . to . equal ( 'closed' )
159- expect ( inbound ) . to . have . property ( 'readableEnded' , true )
160159 } )
161160
162161 it ( 'should finish closing before emitting end when the transport fails' , async ( ) => {
@@ -212,8 +211,11 @@ describe('message stream end event', () => {
212211
213212 const order : string [ ] = [ ]
214213
214+ let closeTime : number | undefined
215+
215216 inbound . addEventListener ( 'end' , ( ) => {
216217 order . push ( 'end' )
218+ closeTime = inbound . timeline . close
217219 } )
218220 inbound . addEventListener ( 'close' , ( ) => {
219221 order . push ( 'close' )
@@ -222,7 +224,9 @@ describe('message stream end event', () => {
222224 inbound . abort ( new Error ( 'urk!' ) )
223225
224226 expect ( order ) . to . deep . equal ( [ 'end' , 'close' ] )
225- expect ( inbound ) . to . have . property ( 'readableEnded' , true )
227+
228+ // the stream must be fully closed before listeners run
229+ expect ( closeTime ) . to . be . a ( 'number' )
226230 } )
227231
228232 it ( 'should emit end before close when the remote resets with no buffered data' , async ( ) => {
@@ -241,7 +245,6 @@ describe('message stream end event', () => {
241245 conn . onRemoteReset ( )
242246
243247 expect ( order ) . to . deep . equal ( [ 'end' , 'close' ] )
244- expect ( conn ) . to . have . property ( 'readableEnded' , true )
245248 } )
246249
247250 it ( 'should emit end after buffered data has been read when the remote resets' , async ( ) => {
@@ -270,7 +273,6 @@ describe('message stream end event', () => {
270273 await pEvent ( conn , 'end' )
271274
272275 expect ( received ) . to . deep . equal ( [ uint8ArrayFromString ( 'hello world' ) ] )
273- expect ( conn ) . to . have . property ( 'readableEnded' , true )
274276 } )
275277
276278 it ( 'should not emit end while buffered data cannot be delivered' , async ( ) => {
@@ -319,6 +321,9 @@ describe('message stream end event', () => {
319321 inbound . unshift ( uint8ArrayFromString ( 'world' ) )
320322 inbound . unshift ( uint8ArrayFromString ( 'hello ' ) )
321323
324+ // data arriving after 'end' does not un-emit it
325+ expect ( inbound ) . to . have . property ( 'readableEnded' , true )
326+
322327 const messages : string [ ] = [ ]
323328
324329 inbound . addEventListener ( 'message' , ( evt ) => {
0 commit comments