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:
Wynne668
2026-07-17 13:09:53 +08:00
committed by GitHub
parent 6b608ceae1
commit f63ea72f28
2 changed files with 17 additions and 0 deletions

View File

@@ -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) ?? {};

View File

@@ -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,