Skip to content

ColdObservable.from(promise) never delivers a rejection to the subscriber #7636

Description

@MaXal

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 rxjs@9.0.0-beta.0
node repro.mjs
import { 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 function

Expected: 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions