ColdObservable.from(promise) never delivers a rejection to the subscriber
Describe the bug
If the promise given to ColdObservable.from() rejects, the subscriber's error callback is not called. Instead, an unhandled promise rejection reports TypeError: subscriber[errorSubscriber] is not a function.
A rejected promise passed to the polyfilled Observable.from(), or returned from [mergeMap], reaches the subscriber's error callback as expected.
Expected behavior
Save the following as repro.mjs in an empty directory, then run:
npm install [email protected]
node repro.mjsimport { ColdObservable } from "rxjs"
import { mergeMap } from "rxjs/merge-map"
process.on("unhandledRejection", (e) => console.log("UNHANDLED REJECTION:", e?.message))
const observer = (label) => ({
next: (v) => console.log(label, "next", v),
error: (e) => console.log(label, "error ->", e?.message),
complete: () => console.log(label, "complete"),
})
ColdObservable.from(Promise.reject(new Error("cold from"))).subscribe(observer("cold"))
Observable.from(Promise.reject(new Error("polyfill from"))).subscribe(observer("polyfill"))
ColdObservable.from([1])[mergeMap](() => Promise.reject(new Error("mergeMap"))).subscribe(observer("mergeMap"))Output:
polyfill error -> polyfill from
mergeMap error -> mergeMap
UNHANDLED REJECTION: subscriber[errorSubscriber] is not a functionExpected: cold error -> cold from is also logged, with no unhandled rejection.
Reproduction code
Reproduction URL
No response
Version
rxjs 9.0.0-beta.0 with @rxjs/observable-polyfill 9.0.0-beta.0
Environment
Node 26.8.2 on macOS
Additional context
We use ColdObservable.from(WebAssembly.instantiateStreaming(...)) for WASM initialization. A failed load leaves the app waiting without reaching its error handler.
Source: ReactiveX/rxjs