mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-26 03:21:13 +00:00
fix(github-copilot): prevent failed usage checks from holding connections (#109540)
* fix(github-copilot): release failed usage responses * test(github-copilot): preserve usage HTTP errors Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com> --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
This commit is contained in:
@@ -242,6 +242,22 @@ describe("fetchCopilotUsage", () => {
|
||||
expect(result.windows).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("cancels failed response bodies", async () => {
|
||||
let canceled = false;
|
||||
const body = new ReadableStream({
|
||||
cancel() {
|
||||
canceled = true;
|
||||
throw new Error("stream already closed");
|
||||
},
|
||||
});
|
||||
const mockFetch = createProviderUsageFetch(async () => new Response(body, { status: 500 }));
|
||||
|
||||
const result = await fetchCopilotUsage("token", 5000, mockFetch);
|
||||
|
||||
expect(result.error).toBe("HTTP 500");
|
||||
expect(canceled).toBe(true);
|
||||
});
|
||||
|
||||
it("parses premium/chat usage from remaining percentages", async () => {
|
||||
const mockFetch = createProviderUsageFetch(async (_url, init) => {
|
||||
const headers = (init?.headers as Record<string, string> | undefined) ?? {};
|
||||
|
||||
@@ -38,6 +38,7 @@ export async function fetchCopilotUsage(
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
await res.body?.cancel().catch(() => undefined);
|
||||
return buildUsageHttpErrorSnapshot({
|
||||
provider: "github-copilot",
|
||||
status: res.status,
|
||||
|
||||
Reference in New Issue
Block a user