Skip to content

fix(deno): Handle reader.closed rejection from releaseLock() in streaming#20187

Open
andreiborza wants to merge 2 commits intodevelopfrom
ab/deno-reader
Open

fix(deno): Handle reader.closed rejection from releaseLock() in streaming#20187
andreiborza wants to merge 2 commits intodevelopfrom
ab/deno-reader

Conversation

@andreiborza
Copy link
Copy Markdown
Member

This PR replaces reader.closed.finally(() => onDone()) with reader.closed.then(() => onDone(), () => onDone()) in monitorStream.

Per the WHATWG Streams spec, reader.releaseLock() rejects reader.closed when the promise is still pending. .finally() propagates that rejection as an unhandled promise rejection, while .then(f, f) suppresses it by handling both the fulfilled and rejected cases.

I was not able to reproduce the error directly on my deno version but this should prevent the issue.

Closes: #20177

…treaming

Replace `reader.closed.finally(() => onDone())` with
`reader.closed.then(() => onDone(), () => onDone())` in `monitorStream`.

Per the WHATWG Streams spec, `reader.releaseLock()` rejects `reader.closed`
when the promise is still pending. `.finally()` propagates that rejection as
an unhandled promise rejection, while `.then(f, f)` suppresses it by handling
both the fulfilled and rejected cases.

Closes: #20177
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

Semver Impact of This PR

🟢 Patch (bug fixes)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

Core

  • Add enableTruncation option to OpenAI integration by andreiborza in #20167
  • Export a reusable function to add tracing headers by JPeer264 in #20076

Bug Fixes 🐛

  • (deno) Handle reader.closed rejection from releaseLock() in streaming by andreiborza in #20187

🤖 This preview updates automatically when you update the PR.

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f21ef57. Configure here.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 25.72 kB +0.31% +77 B 🔺
@sentry/browser - with treeshaking flags 24.21 kB +0.34% +82 B 🔺
@sentry/browser (incl. Tracing) 42.73 kB +1.36% +573 B 🔺
@sentry/browser (incl. Tracing, Profiling) 47.35 kB +1.25% +583 B 🔺
@sentry/browser (incl. Tracing, Replay) 81.54 kB +0.75% +600 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 71.11 kB +0.78% +549 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas) 86.25 kB +0.7% +594 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback) 98.45 kB +0.56% +541 B 🔺
@sentry/browser (incl. Feedback) 42.51 kB +0.21% +87 B 🔺
@sentry/browser (incl. sendFeedback) 30.39 kB +0.27% +80 B 🔺
@sentry/browser (incl. FeedbackAsync) 35.38 kB +0.24% +82 B 🔺
@sentry/browser (incl. Metrics) 27.04 kB +0.31% +83 B 🔺
@sentry/browser (incl. Logs) 27.18 kB +0.3% +81 B 🔺
@sentry/browser (incl. Metrics & Logs) 27.86 kB +0.29% +80 B 🔺
@sentry/react 27.48 kB +0.26% +71 B 🔺
@sentry/react (incl. Tracing) 45.05 kB +1.28% +566 B 🔺
@sentry/vue 30.56 kB +1.61% +483 B 🔺
@sentry/vue (incl. Tracing) 44.59 kB +1.23% +538 B 🔺
@sentry/svelte 25.74 kB +0.31% +77 B 🔺
CDN Bundle 28.41 kB +0.3% +83 B 🔺
CDN Bundle (incl. Tracing) 43.75 kB +1.46% +628 B 🔺
CDN Bundle (incl. Logs, Metrics) 29.78 kB +0.31% +92 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) 44.83 kB +1.5% +660 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 68.59 kB +0.16% +103 B 🔺
CDN Bundle (incl. Tracing, Replay) 80.64 kB +0.78% +621 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 81.66 kB +0.75% +604 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 86.17 kB +0.72% +615 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 87.2 kB +0.71% +610 B 🔺
CDN Bundle - uncompressed 82.99 kB +0.34% +279 B 🔺
CDN Bundle (incl. Tracing) - uncompressed 129.77 kB +1.5% +1.92 kB 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed 87.14 kB +0.33% +279 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 133.19 kB +1.46% +1.92 kB 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 210.12 kB +0.14% +279 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed 246.65 kB +0.79% +1.92 kB 🔺
⛔️ CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed (max: 250 kB) 250.05 kB +0.78% +1.92 kB 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 259.56 kB +0.75% +1.92 kB 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 262.95 kB +0.74% +1.92 kB 🔺
@sentry/nextjs (client) 47.47 kB +1.24% +579 B 🔺
@sentry/sveltekit (client) 43.2 kB +1.36% +577 B 🔺
@sentry/node-core 57.86 kB +3.78% +2.1 kB 🔺
@sentry/node 174.83 kB +1.42% +2.43 kB 🔺
@sentry/node - without tracing 97.97 kB +2.02% +1.94 kB 🔺
@sentry/aws-serverless 115.22 kB +2.11% +2.38 kB 🔺

View base workflow run

Copy link
Copy Markdown
Member

@s1gr1d s1gr1d left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like a good approach - looks good 👍

@andreiborza andreiborza enabled auto-merge (squash) April 10, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reader was released and can no longer be used to monitor the stream's closedness.

2 participants