(
e: unknown,
ctx: { providerID: ProviderV2.ID; aborted?: boolean },
)
| 601 | } |
| 602 | |
| 603 | export function fromError( |
| 604 | e: unknown, |
| 605 | ctx: { providerID: ProviderV2.ID; aborted?: boolean }, |
| 606 | ): NonNullable<Assistant["error"]> { |
| 607 | switch (true) { |
| 608 | case e instanceof DOMException && e.name === "AbortError": |
| 609 | return new AbortedError( |
| 610 | { message: e.message }, |
| 611 | { |
| 612 | cause: e, |
| 613 | }, |
| 614 | ).toObject() |
| 615 | case OutputLengthError.isInstance(e): |
| 616 | return e |
| 617 | case LoadAPIKeyError.isInstance(e): |
| 618 | return new AuthError( |
| 619 | { |
| 620 | providerID: ctx.providerID, |
| 621 | message: e.message, |
| 622 | }, |
| 623 | { cause: e }, |
| 624 | ).toObject() |
| 625 | case (e as SystemError)?.code === "ECONNRESET": |
| 626 | return new APIError( |
| 627 | { |
| 628 | message: "Connection reset by server", |
| 629 | isRetryable: true, |
| 630 | metadata: { |
| 631 | code: (e as SystemError).code ?? "", |
| 632 | syscall: (e as SystemError).syscall ?? "", |
| 633 | message: (e as SystemError).message ?? "", |
| 634 | }, |
| 635 | }, |
| 636 | { cause: e }, |
| 637 | ).toObject() |
| 638 | case e instanceof Error && (e as FetchDecompressionError).code === "ZlibError": |
| 639 | if (ctx.aborted) { |
| 640 | return new AbortedError({ message: e.message }, { cause: e }).toObject() |
| 641 | } |
| 642 | return new APIError( |
| 643 | { |
| 644 | message: "Response decompression failed", |
| 645 | isRetryable: true, |
| 646 | metadata: { |
| 647 | code: (e as FetchDecompressionError).code, |
| 648 | message: e.message, |
| 649 | }, |
| 650 | }, |
| 651 | { cause: e }, |
| 652 | ).toObject() |
| 653 | case e instanceof ProviderError.HeaderTimeoutError: |
| 654 | return new APIError( |
| 655 | { |
| 656 | message: e.message, |
| 657 | isRetryable: true, |
| 658 | metadata: { |
| 659 | code: e.name, |
| 660 | timeoutMs: String(e.ms), |
nothing calls this directly
no test coverage detected