Skip to content

Fixing error handling when stream is destroyed while reading#3966

Closed
djs113 wants to merge 4 commits intoaxios:masterfrom
djs113:error-handling-while-stream-destroyed
Closed

Fixing error handling when stream is destroyed while reading#3966
djs113 wants to merge 4 commits intoaxios:masterfrom
djs113:error-handling-while-stream-destroyed

Conversation

@djs113
Copy link
Contributor

@djs113 djs113 commented Aug 20, 2021

This PR fixes #3780, fixes #3770. The problem is that when the input data is stream and the stream gets destroyed while the it is being read, then axios gets stuck and nothing is displayed. If an Error is provided to the stream.destroy() then the error is displayed but still axios is stuck after the error message is displayed. This PR solves this issue.

@djs113 djs113 changed the title Error handling when stream is destroyed while reading Fixing error handling when stream is destroyed while reading Aug 20, 2021
@djs113
Copy link
Contributor Author

djs113 commented Aug 21, 2021

@jasonsaayman please approve this workflow

@idmitme
Copy link

idmitme commented Nov 29, 2021

Please note that changing .pipe to .on('data', ...) introduces some implicit changes: for example if stream is in readable.readableFlowing === false state, .pipe will resume the stream while adding .on('data', ...) won't

@jasonsaayman
Copy link
Member

Closing due to inactivity

DigitalBrainJS added a commit to DigitalBrainJS/axios that referenced this pull request Jun 12, 2022
…mption;

Added throwing an error if the request stream was silently destroying (without error) Refers to axios#3966;
jasonsaayman added a commit that referenced this pull request Jun 18, 2022
* Added AxiosHeaders class;

* Fixed README.md href;

* Fixed a potential bug with headers normalization;

* Fixed a potential bug with headers normalization;
Refactored accessor building routine;
Refactored default transforms;
Removed `normalizeHeaderName` helper;

* Added `Content-Length` accessor;
Added missed `has` accessor to TS types;

* Added `AxiosTransformStream` class;
Added progress capturing ability for node.js environment;
Added `maxRate` option to limit the data rate in node.js environment;
Refactored event handled by `onUploadProgress` && `onDownloadProgress` listeners in browser environment;
Added progress & data rate tests for the http adapter;
Added response stream aborting test;
Added a manual progress capture test for the browser;
Updated TS types;
Added TS tests;
Refactored request abort logic for the http adapter;
Added ability to abort the response stream;

* Remove `stream/promises` & `timers/promises` modules usage in tests;

* Use `abortcontroller-polyfill`;

* Fixed AxiosTransformStream dead-lock in legacy node versions;
Fixed CancelError emitting in streams;

* Reworked AxiosTransformStream internal logic to optimize memory consumption;
Added throwing an error if the request stream was silently destroying (without error) Refers to #3966;

* Treat the destruction of the request stream as a cancellation of the request;
Fixed tests;

* Emit `progress` event in the next tick;

* Initial refactoring;

* Refactored Mocha tests to use ESM;

* Refactored Karma tests to use rollup preprocessor & ESM;
Replaced grunt with gulp;
Improved dev scripts;
Added Babel for rollup build;

* Added default commonjs package export for Node build;
Added automatic contributors list generator for package.json;

Co-authored-by: Jay <jasonsaayman@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants