fix(openai): preserve websocket upgrade error messages
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
import WebSocket from "ws"
|
import WebSocket from "ws"
|
||||||
import { ProviderError } from "@/provider/error"
|
import { ProviderError } from "@/provider/error"
|
||||||
|
import { errorMessage } from "@/util/error"
|
||||||
|
|
||||||
export const PROTOCOL_HEADER = "responses_websockets=2026-02-06"
|
export const PROTOCOL_HEADER = "responses_websockets=2026-02-06"
|
||||||
|
|
||||||
@@ -94,10 +95,10 @@ export function connectResponsesWebSocket(options: ConnectResponsesWebSocketOpti
|
|||||||
resolve(socket)
|
resolve(socket)
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(error: Error) {
|
function onError(error: unknown) {
|
||||||
socket.on("error", () => {})
|
socket.on("error", () => {})
|
||||||
cleanup()
|
cleanup()
|
||||||
reject(error)
|
reject(error instanceof Error ? error : new Error(errorMessage(error), { cause: error }))
|
||||||
}
|
}
|
||||||
|
|
||||||
function onClose(code: number, reason: Buffer) {
|
function onClose(code: number, reason: Buffer) {
|
||||||
|
|||||||
@@ -39,6 +39,17 @@ describe("plugin.openai.ws", () => {
|
|||||||
).rejects.toThrow("WebSocket connect timed out")
|
).rejects.toThrow("WebSocket connect timed out")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("surfaces websocket upgrade rejection messages", async () => {
|
||||||
|
await using server = await createRejectingWebSocketServer(() => {})
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
OpenAIWebSocket.connectResponsesWebSocket({
|
||||||
|
url: server.wsUrl,
|
||||||
|
headers: {},
|
||||||
|
}),
|
||||||
|
).rejects.toThrow("Expected 101 status code")
|
||||||
|
})
|
||||||
|
|
||||||
test("enforces websocket send idle timeout", async () => {
|
test("enforces websocket send idle timeout", async () => {
|
||||||
const socket = new (class extends EventEmitter {
|
const socket = new (class extends EventEmitter {
|
||||||
send(_data: string, _callback: (error?: Error) => void) {}
|
send(_data: string, _callback: (error?: Error) => void) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user