René's URL Explorer Experiment


Title: stream: apply multiple stream/iter fixes by jasnell · Pull Request #65652 · nodejs/node · GitHub

Open Graph Title: stream: apply multiple stream/iter fixes by jasnell · Pull Request #65652 · nodejs/node

X Title: stream: apply multiple stream/iter fixes by jasnell · Pull Request #65652 · nodejs/node

Description: Nine commits, nine issues: pull() cancellation cannot preempt a pending next() transformed push, broadcast, and share consumers leak their underlying side terminating a push consumer can make writer.end() hang forever byte-budget accounting is derived from mutable data writev() can resolve after losing the entire outer write DuplexChannel close() does not close an unread incoming direction merge() mishandles arbitrary errors and can block error propagation forever Share cancellation cannot interrupt the pull owner pipeToSync() starts asynchronous close work that nobody can observe Recommend reviewing each commit separately. Plus one minor cleanup commit.

Open Graph Description: Nine commits, nine issues: pull() cancellation cannot preempt a pending next() transformed push, broadcast, and share consumers leak their underlying side terminating a push consumer can make writ...

X Description: Nine commits, nine issues: pull() cancellation cannot preempt a pending next() transformed push, broadcast, and share consumers leak their underlying side terminating a push consumer can make writ...

Opengraph URL: https://github.com/nodejs/node/pull/65652

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:11c8a6e7-9d1f-b72a-24f8-394352befd54
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idE6B0:34BF50:971A82:CA71AD:6AED2FAA
html-safe-nonce5580c584d74aa3556f89d2403abbf00bdfbb0b42f28b322a80a2c88970b9b291
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNkIwOjM0QkY1MDo5NzFBODI6Q0E3MUFEOjZBRUQyRkFBIiwidmlzaXRvcl9pZCI6IjY3MzA4NTk4MjUwODE0Mjk5MzAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac716ea77ff721e8e36bee596411eaf08075a89b60a129a910d3f9965bd5175d91
hovercard-subject-tagpull_request:4393960051
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/nodejs/node/pull/65652/files
twitter:imagehttps://avatars.githubusercontent.com/u/439929?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/439929?s=400&v=4
og:image:altNine commits, nine issues: pull() cancellation cannot preempt a pending next() transformed push, broadcast, and share consumers leak their underlying side terminating a push consumer can make writ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonee51d0b7b5ab34b1688c05b54c3ed17b8658b2fa9bca973a9c740683ccb12cf4a
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/nodejs/node git https://github.com/nodejs/node.git
octolytics-dimension-user_id9950313
octolytics-dimension-user_loginnodejs
octolytics-dimension-repository_id27193779
octolytics-dimension-repository_nwonodejs/node
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id27193779
octolytics-dimension-repository_network_root_nwonodejs/node
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release59ebb7b901cc154ecc179a44f266fcf69f343b30
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/nodejs/node/pull/65652/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F65652%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F65652%2Ffiles
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=nodejs%2Fnode
Reloadhttps://github.com/nodejs/node/pull/65652/files
Reloadhttps://github.com/nodejs/node/pull/65652/files
Reloadhttps://github.com/nodejs/node/pull/65652/files
nodejshttps://github.com/nodejs
nodehttps://github.com/nodejs/node
Codehttps://github.com/nodejs/node
Issues656 (656)https://github.com/nodejs/node/issues
Pull requests666 (666)https://github.com/nodejs/node/pulls
Actionshttps://github.com/nodejs/node/actions
Projectshttps://github.com/nodejs/node/projects
Security and qualityhttps://github.com/nodejs/node/security
Insightshttps://github.com/nodejs/node/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
jasnellhttps://github.com/jasnell
nodejs:mainhttps://github.com/nodejs/node/tree/main
jasnell:jasnell/stream-iter-fixeshttps://github.com/jasnell/node/tree/jasnell/stream-iter-fixes
Conversation 25 https://github.com/nodejs/node/pull/65652
Commits 11 https://github.com/nodejs/node/pull/65652/commits
Checks 35 https://github.com/nodejs/node/pull/65652/checks
Files changed https://github.com/nodejs/node/pull/65652/files
Please reload this pagehttps://github.com/nodejs/node/pull/65652/files
stream: apply multiple stream/iter fixes https://github.com/nodejs/node/pull/65652/files#top
Show all changes 11 commits https://github.com/nodejs/node/pull/65652/files
f3198c8 stream: fixup cancelation handling in pull() jasnell Aug 29, 2026 https://github.com/nodejs/node/pull/65652/commits/f3198c8591cfceb1bb980388e9b27789d9a37217
a6b3429 stream: ensure iterator cleanup on done, reject, etc jasnell Aug 29, 2026 https://github.com/nodejs/node/pull/65652/commits/a6b3429e9ca2cc295469a724612d3530db873feb
15768a0 stream: fixup writer to terminate on consumer return/throw jasnell Aug 29, 2026 https://github.com/nodejs/node/pull/65652/commits/15768a0cabecd4e8c3b30dec081274ecf239d2bd
939c708 stream: ensure stability of stored metadata jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/939c708c6349be7ac7b929a242fb7474e313e643
fc18b83 stream: defend against re-entrancy in writev jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/fc18b83a387a8cd695fa12895df8f422b62736be
1c7fc6d stream: ensure full-close semantics when closed jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/1c7fc6d71224a4eb1ec41fe04f41acd4c4a610fa
46c3160 stream: fix merge settlement tagging and falsy error tracking jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/46c3160d5c5840e9ed7cbb89810df49d66f40c49
6dae2a1 stream: cancel active stream/iter pulls jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/6dae2a1396de2835b6bb615fd9511f693222b9fd
15368e2 stream: ensure pipeToSync requires synchronous close jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/15368e2d9aedf60605089743f2ba7e902c51400d
1db964b stream: replace object sentinel with symbol jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/1db964b0f93505cb5f761b52fb7269f94d87f6c6
acf4fe4 stream: address stream/iter review feedback jasnell Aug 30, 2026 https://github.com/nodejs/node/pull/65652/commits/acf4fe4677ef394c8594cdea08e2a46edfb257a9
Clear filters https://github.com/nodejs/node/pull/65652/files
Please reload this pagehttps://github.com/nodejs/node/pull/65652/files
Please reload this pagehttps://github.com/nodejs/node/pull/65652/files
broadcast.js https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
consumers.js https://github.com/nodejs/node/pull/65652/files#diff-92085d6405796cc8751e9e8ff1700d4e609e4f15f7aeb4c3a9f91684f974bd1c
duplex.js https://github.com/nodejs/node/pull/65652/files#diff-eff2fc767d284580c170b6c6714f7b18fb3cd1a029902efee1660124492b5279
pull.js https://github.com/nodejs/node/pull/65652/files#diff-f124e8696161bf90c965ba68b5e10f592ecca907ff4ec6e611a6b762db30d710
push.js https://github.com/nodejs/node/pull/65652/files#diff-df19d90f1ff5d68c5be20e0510aa6322f174a51bececf2d0c57c12cf59e10cb4
share.js https://github.com/nodejs/node/pull/65652/files#diff-cbbd247e6f3d7186a7d7d21fa07bac75435e6eceb14eac213e815e45f0669731
utils.js https://github.com/nodejs/node/pull/65652/files#diff-696e84a9f8c71a0c64891d3530cc37b218b446ac92bded67c1ccf266aad7d846
test-stream-iter-consumers-merge.js https://github.com/nodejs/node/pull/65652/files#diff-5d57e750ae7eb12a45a3515c8fe815310fa4838b56a0ba769e82bf87e3308800
test-stream-iter-duplex.js https://github.com/nodejs/node/pull/65652/files#diff-ed014a016c237d8891dab0ceb28248795c6c5918f37a727550ca22efeee8fc6e
test-stream-iter-pipeto-edge.js https://github.com/nodejs/node/pull/65652/files#diff-e8a7fe52d5e72ae524cca4a1766c703de9167440967dbf4da568fa706e2fa9ec
test-stream-iter-pipeto.js https://github.com/nodejs/node/pull/65652/files#diff-f8c83e13012bf1d736ac77416311d1eb837c2e3eb5e9960a771527933e3202de
test-stream-iter-pull-async.js https://github.com/nodejs/node/pull/65652/files#diff-354f4fe8056271679573b09aa9ce998d6698e511dba5e125e257d6f995d99a05
test-stream-iter-push-writer.js https://github.com/nodejs/node/pull/65652/files#diff-dbf58f410d7fddd13b8b4164a080a791be5e32096b71f6a707ff1937042ff3c5
test-stream-iter-resizable-buffers.js https://github.com/nodejs/node/pull/65652/files#diff-917df39511df5130e2ccfa1b7309e5f3179b7436416fe4825c1872a5484ad712
test-stream-iter-share-async.js https://github.com/nodejs/node/pull/65652/files#diff-3ee1b7bf6ead385cc930b43b2e07ed891f657e9658743171a6504691f1b76c24
test-stream-iter-validation.js https://github.com/nodejs/node/pull/65652/files#diff-23f05eb6cd2e803998a0fa9b0a0f9353d9540a62f9897f5b2e3e62e7fbcc9d3b
test-stream-iter-writer-reentrancy.js https://github.com/nodejs/node/pull/65652/files#diff-6923c9cb89042d72940052ee36b10831f8788df37f4618a18ae5c3513cce9b06
lib/internal/streams/iter/broadcast.jshttps://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
View file https://github.com/jasnell/node/blob/acf4fe4677ef394c8594cdea08e2a46edfb257a9/lib/internal/streams/iter/broadcast.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/65652/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
https://github.com/nodejs/node/pull/65652/files#diff-3c3b3eb3fc844b33761f7d97032a6b2c580497aa5f6069f0e8a659e99c889e1c
Please reload this pagehttps://github.com/nodejs/node/pull/65652/files
Please reload this pagehttps://github.com/nodejs/node/pull/65652/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.