Clarify when readable._read(...) is called. #38726
Closed
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
Fixes: #38586
This PR clarifies some confusion with the
readable._read(...)function dealing with when it is called. The current version of the documentation seems to suggest that_read()is responsible for looping itself to continually request data untilthis.push(...)returnsfalse, but this is not the case. After implementing a readable stream this way, I quickly found memory leaks in my code, because Node.JS was calling my_readfunction after everythis.push(...), but I was also looping inside_read, resulting in an exponentially increasing number of reads on the remote resource. Hopefully this will help to clarify this behavior.This is my first PR against NodeJS, so please let me know if there's anything I could do better.