diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-02-19 14:30:28 -0500 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-02-20 09:58:22 -0500 |
| commit | bb0bc689275cb6f2dd5f95ecf3152547a116abf4 (patch) | |
| tree | 60e9e2b50ff277d9878a2c8db01d9d561fc1db55 /packages/backend/src/misc/is-retryable-error.ts | |
| parent | fix logging for quote errors (diff) | |
| download | sharkey-bb0bc689275cb6f2dd5f95ecf3152547a116abf4.tar.gz sharkey-bb0bc689275cb6f2dd5f95ecf3152547a116abf4.tar.bz2 sharkey-bb0bc689275cb6f2dd5f95ecf3152547a116abf4.zip | |
cover more retryable errors for quote resolution
Diffstat (limited to 'packages/backend/src/misc/is-retryable-error.ts')
| -rw-r--r-- | packages/backend/src/misc/is-retryable-error.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/backend/src/misc/is-retryable-error.ts b/packages/backend/src/misc/is-retryable-error.ts new file mode 100644 index 0000000000..9bb8700c7a --- /dev/null +++ b/packages/backend/src/misc/is-retryable-error.ts @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { AbortError } from 'node-fetch'; +import { UnrecoverableError } from 'bullmq'; +import { StatusError } from '@/misc/status-error.js'; +import { IdentifiableError } from '@/misc/identifiable-error.js'; + +/** + * Returns false if the provided value represents a "permanent" error that cannot be retried. + * Returns true if the error is retryable, unknown (as all errors are retryable by default), or not an error object. + */ +export function isRetryableError(e: unknown): boolean { + if (e instanceof StatusError) return e.isRetryable; + if (e instanceof IdentifiableError) return e.isRetryable; + if (e instanceof UnrecoverableError) return false; + if (e instanceof AbortError) return true; + if (e instanceof Error) return e.name === 'AbortError'; + return true; +} |