Skip to content

Commit 63f8f07

Browse files
committed
Add SseError class for easier introspection
1 parent 9923aec commit 63f8f07

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/client/sse.ts

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
1-
import { EventSource, type EventSourceInit } from "eventsource";
1+
import { EventSource, type ErrorEvent, type EventSourceInit } from "eventsource";
22
import { Transport } from "../shared/transport.js";
33
import { JSONRPCMessage, JSONRPCMessageSchema } from "../types.js";
44

5+
export class SseError extends Error {
6+
constructor(
7+
public readonly code: number | undefined,
8+
message: string | undefined,
9+
public readonly event: ErrorEvent,
10+
) {
11+
super(`SSE error: ${message}`);
12+
}
13+
}
14+
515
/**
616
* Client transport for SSE: this will connect to a server using Server-Sent Events for receiving
717
* messages and make separate POST requests for sending messages.
@@ -42,10 +52,7 @@ export class SSEClientTransport implements Transport {
4252
this._abortController = new AbortController();
4353

4454
this._eventSource.onerror = (event) => {
45-
const message = `SSE error: ${event.message}`;
46-
const error = new Error(message);
47-
Object.assign(error, { code: event.code });
48-
55+
const error = new SseError(event.code, event.message, event);
4956
reject(error);
5057
this.onerror?.(error);
5158
};

0 commit comments

Comments
 (0)