fix: do not handle write errors after request is aborted (#28682)
This fixes a flake on linux CI which started recently where the "write" promise is being rejected after the request has been aborted / cancelled. In this case we should drop the error to the floor but instead we pass it down the stack where it eventually emits a now unhandled error event. Example failure: https://app.circleci.com/pipelines/github/electron/electron/38072/workflows/c1faf19b-aa41-4f99-a564-165729222859/jobs/838813 Verified fix by running the test that caused it 10000 times before fix and 10000 times after. ~50 failures before, 0 after.
This commit is contained in:
		
					parent
					
						
							
								484931bba2
							
						
					
				
			
			
				commit
				
					
						b8c2481edb
					
				
			
		
					 1 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
					@ -188,6 +188,11 @@ class ChunkedBodyStream extends Writable {
 | 
				
			||||||
    this._downstream = pipe;
 | 
					    this._downstream = pipe;
 | 
				
			||||||
    if (this._pendingChunk) {
 | 
					    if (this._pendingChunk) {
 | 
				
			||||||
      const doneWriting = (maybeError: Error | void) => {
 | 
					      const doneWriting = (maybeError: Error | void) => {
 | 
				
			||||||
 | 
					        // If the underlying request has been aborted, we honeslty don't care about the error
 | 
				
			||||||
 | 
					        // all work should cease as soon as we abort anyway, this error is probably a
 | 
				
			||||||
 | 
					        // "mojo pipe disconnected" error (code=9)
 | 
				
			||||||
 | 
					        if (this._clientRequest._aborted) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const cb = this._pendingCallback!;
 | 
					        const cb = this._pendingCallback!;
 | 
				
			||||||
        delete this._pendingCallback;
 | 
					        delete this._pendingCallback;
 | 
				
			||||||
        delete this._pendingChunk;
 | 
					        delete this._pendingChunk;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue