fix(openai): preserve websocket upgrade error messages (#29774)

This commit is contained in:
Aiden Cline 2026-05-28 14:34:28 -05:00 committed by GitHub
parent 824ecf2f4d
commit cbc4b062f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 2 deletions

View file

@ -3,6 +3,7 @@
import WebSocket from "ws"
import { ProviderError } from "@/provider/error"
import { errorMessage } from "@/util/error"
export const PROTOCOL_HEADER = "responses_websockets=2026-02-06"
@ -94,10 +95,10 @@ export function connectResponsesWebSocket(options: ConnectResponsesWebSocketOpti
resolve(socket)
}
function onError(error: Error) {
function onError(error: unknown) {
socket.on("error", () => {})
cleanup()
reject(error)
reject(error instanceof Error ? error : new Error(errorMessage(error), { cause: error }))
}
function onClose(code: number, reason: Buffer) {

View file

@ -39,6 +39,17 @@ describe("plugin.openai.ws", () => {
).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 () => {
const socket = new (class extends EventEmitter {
send(_data: string, _callback: (error?: Error) => void) {}