MCPcopy Create free account
hub / github.com/boringstack-xyz/boringstack / isRetryableError

Function isRetryableError

apps/api/src/lib/email/email.utils.ts:107–136  ·  view source on GitHub ↗
(
  error: unknown,
  retryableErrorTypes: (new (...args: never[]) => Error)[] = []
)

Source from the content-addressed store, hash-verified

105 */
106
107export const isRetryableError = (
108 error: unknown,
109 retryableErrorTypes: (new (...args: never[]) => Error)[] = []
110): boolean => {
111 if (error === null || error === undefined) {
112 return false;
113 }
114
115 for (const ErrorType of retryableErrorTypes) {
116 if (error instanceof ErrorType) {
117 return true;
118 }
119 }
120
121 if (!(error instanceof Error)) {
122 return false;
123 }
124
125 const name = error.name.toLowerCase();
126
127 if (TRANSIENT_NAME_PATTERNS.some((pattern) => name.includes(pattern))) {
128 return true;
129 }
130
131 const message = error.message.toLowerCase();
132
133 return TRANSIENT_MESSAGE_PATTERNS.some((pattern) =>
134 message.includes(pattern)
135 );
136};
137
138const delay = async (ms: number): Promise<void> =>
139 new Promise((resolve) => setTimeout(resolve, ms));

Callers 2

retry.test.tsFile · 0.90
retryWithBackoffFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected