Add SseError class for easier introspection
This commit is contained in:
parent
9923aecf29
commit
63f8f07a22
1 changed files with 12 additions and 5 deletions
|
|
@ -1,7 +1,17 @@
|
|||
import { EventSource, type EventSourceInit } from "eventsource";
|
||||
import { EventSource, type ErrorEvent, type EventSourceInit } from "eventsource";
|
||||
import { Transport } from "../shared/transport.js";
|
||||
import { JSONRPCMessage, JSONRPCMessageSchema } from "../types.js";
|
||||
|
||||
export class SseError extends Error {
|
||||
constructor(
|
||||
public readonly code: number | undefined,
|
||||
message: string | undefined,
|
||||
public readonly event: ErrorEvent,
|
||||
) {
|
||||
super(`SSE error: ${message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Client transport for SSE: this will connect to a server using Server-Sent Events for receiving
|
||||
* messages and make separate POST requests for sending messages.
|
||||
|
|
@ -42,10 +52,7 @@ export class SSEClientTransport implements Transport {
|
|||
this._abortController = new AbortController();
|
||||
|
||||
this._eventSource.onerror = (event) => {
|
||||
const message = `SSE error: ${event.message}`;
|
||||
const error = new Error(message);
|
||||
Object.assign(error, { code: event.code });
|
||||
|
||||
const error = new SseError(event.code, event.message, event);
|
||||
reject(error);
|
||||
this.onerror?.(error);
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue