summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc/is-retryable-error.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-02-19 14:30:28 -0500
committerHazelnoot <acomputerdog@gmail.com>2025-02-20 09:58:22 -0500
commitbb0bc689275cb6f2dd5f95ecf3152547a116abf4 (patch)
tree60e9e2b50ff277d9878a2c8db01d9d561fc1db55 /packages/backend/src/misc/is-retryable-error.ts
parentfix logging for quote errors (diff)
downloadsharkey-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.ts22
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;
+}