diff --git a/javascript_client/src/subscriptions/__tests__/createRelaySubscriptionHandlerTest.ts b/javascript_client/src/subscriptions/__tests__/createRelaySubscriptionHandlerTest.ts index af5732ff9b..c9a33301ae 100644 --- a/javascript_client/src/subscriptions/__tests__/createRelaySubscriptionHandlerTest.ts +++ b/javascript_client/src/subscriptions/__tests__/createRelaySubscriptionHandlerTest.ts @@ -62,6 +62,37 @@ describe("createRelaySubscriptionHandler", () => { ] expect(performLog).toEqual(expectedLog) }) + + it("forwards transport errors to the Relay observer", () => { + var channel: any + var dummyActionCableConsumer = { + subscriptions: { + create: (_params: any, handlers: any) => { + channel = handlers + return { unsubscribe: () => true } + } + } + } + + var handler = createRelaySubscriptionHandler({ + cable: (dummyActionCableConsumer as unknown) as Consumer + }) + var observable = handler( + { id: "abc", text: null, name: "def", operationKind: "subscription", metadata: {} }, + {} + ) + var receivedError: Error | undefined + observable.subscribe({ + error: (error: Error) => { + receivedError = error + } + }) + + var error = new Error("Subscription failed") + channel.received({ result: { errors: error }, more: true }) + + expect(receivedError).toBe(error) + }) }) describe("createLegacyRelaySubscriptionHandler", () => { diff --git a/javascript_client/src/subscriptions/createRelaySubscriptionHandler.ts b/javascript_client/src/subscriptions/createRelaySubscriptionHandler.ts index 6036e25428..29bdb38582 100644 --- a/javascript_client/src/subscriptions/createRelaySubscriptionHandler.ts +++ b/javascript_client/src/subscriptions/createRelaySubscriptionHandler.ts @@ -52,8 +52,8 @@ function createRelaySubscriptionHandler(options: ActionCableHandlerOptions | Pus variables, {}, { - onError: (_error: Error) => { - observer.error; + onError: (error: Error) => { + observer.error(error); }, onNext: (res: any) => { if (!res || !res.data) {