


























@@ -62,16 +62,21 @@ describeLive("anthropic transport stream live", () => {
6262const abortReason = new Error("live anthropic stream abort");
6363let requestBody = "";
6464let requestBodyPromise: Promise<string> | undefined;
65-let responseClosed = false;
66-let resolveResponseClosed: (() => void) | undefined;
67-const responseClosedPromise = new Promise<void>((resolve) => {
68-resolveResponseClosed = resolve;
65+let connectionClosed = false;
66+let resolveConnectionClosed: (() => void) | undefined;
67+const connectionClosedPromise = new Promise<void>((resolve) => {
68+resolveConnectionClosed = resolve;
6969});
70707171const server = http.createServer((request, response) => {
72+const markConnectionClosed = () => {
73+connectionClosed = true;
74+resolveConnectionClosed?.();
75+};
76+request.on("aborted", markConnectionClosed);
77+request.on("close", markConnectionClosed);
7278response.on("close", () => {
73-responseClosed = true;
74-resolveResponseClosed?.();
79+markConnectionClosed();
7580});
7681requestBodyPromise = readRequestBody(request).then((body) => {
7782requestBody = body;
@@ -118,11 +123,14 @@ describeLive("anthropic transport stream live", () => {
118123if (result === timedOut) {
119124throw new Error("Anthropic live SSE stream did not abort within 1000ms");
120125}
121-await Promise.race([responseClosedPromise, delay(1_000, undefined)]);
126+const observedConnectionClose = await Promise.race([
127+connectionClosedPromise.then(() => true),
128+delay(2_000, false),
129+]);
122130123131expect(result.stopReason).toBe("aborted");
124132expect(result.errorMessage).toBe("live anthropic stream abort");
125-expect(responseClosed).toBe(true);
133+expect(observedConnectionClose || connectionClosed).toBe(true);
126134const capturedRequestBody = requestBodyPromise
127135 ? await Promise.race([requestBodyPromise, delay(500, requestBody)])
128136 : requestBody;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。