Skip to content

Commit bacfc30

Browse files
stainless-botRobertCraigie
authored andcommitted
chore(client): detect node and deno timeout errors
chore: unknown commit message
1 parent fe71a7e commit bacfc30

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/client.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,13 @@ export class BaseAnthropic {
507507
if (isAbortError(response)) {
508508
throw new Errors.APIConnectionTimeoutError();
509509
}
510+
// detect native connection timeout errors
511+
// deno throws "TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)"
512+
// undici throws "TypeError: fetch failed" with cause "ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)"
513+
// others do not provide enough information to distinguish timeouts from other connection errors
514+
if (/timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''))) {
515+
throw new Errors.APIConnectionTimeoutError();
516+
}
510517
throw new Errors.APIConnectionError({ cause: response });
511518
}
512519

0 commit comments

Comments
 (0)