Repository navigation
Conversation
benlesh
marked this pull request as draft
October 12, 2026 17:23
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
ColdObservable.from(rejectedPromise)called a polyfill-private Subscriber Symbol thatColdSubscriberdoes not implement. Use the public contract directly:Related: #7636, #7639. This preserves the simple public-contract design and fixes rejection delivery for ColdObservable. Regression coverage includes multiple direct subscribers, Error/string/undefined reasons, missing handlers, and cancellation.
The added unit test now requires exactly one global report carrying the original reason. It accepts
reportErroror an ErrorEvent fallback; it no longer forbids the browser's reporting API or imposes source coordinates. Observable's written referenced74bace7cf80200a01c81cfe20961e29ac7fa3d8routes promise rejection to Subscriber.error (lines 658–675) and uses report-an-exception as its default error algorithm (447–450). HTML reportError invokes that algorithm; source coordinates are implementation-defined.Draft: strict WPT conformance remains unresolved. The actual browser suite ran at
a229d06b8f8e22bc9eadba09ee103af78d983564, contrary to the earlier PR description: WPT job, artifact11761724197. It passed 523/525 upstream subtests. Both window and worker failedobservable-from.any.jswithError lineno is 0 expected 0 but got 266; the column assertion was not reached. The pinned assertions remain unchanged, with no skips, allowlists, or relaxed gate.A fresh disposable window/worker probe in pinned Chrome
150.0.7871.126confirms native Observable.from rejection reports 0:0. An ordinary script'spromise.catch(reason => reportError(reason))preserves the reason but reports 12:34 in that probe. Both emit exactly one global error and no unhandledrejection. Thus there is a real native compatibility difference despite the spec allowing implementation-defined coordinates; local unit success does not establish WPT conformance.Validation for the test/docs correction: all 55 polyfill tests and all 14 ColdObservable tests pass; both affected packages build and their public type checks pass. Fresh pushed-head WPT still fails the same window/worker coordinate assertions: 523/525 upstream subtests pass, 52/52 URLs complete, and 52/52 RxJS identity attestations pass (artifact
11771553903). All checks on the pushed head are terminal. All Node 22.13/24/26 package gates, repository checks, TypeScript-latest CI, CodeQL, dependency review, and full release-readiness checks (including mobile and desktop Safari, Chrome/Firefox/WebKit, Webpack, performance, Bun, and Deno) pass. The two WPT failures still sayError lineno is 0 expected 0 but got 266; neither reached the column assertion. Local strict WPT was attempted but could not produce valid conformance evidence: its HTTP server could not bind occupied port 8000, leading to executor timeouts; logs are retained and the task's runner was stopped without disturbing the existing server. The separate OSV policy failure on this head is outside this PR's scope. No dependencies, workflows, security policy, or AbortController behavior change.