(error: unknown)
| 239 | } |
| 240 | |
| 241 | export function onError(error: unknown): ReturnType<RunTaskErrorCallback> { |
| 242 | if (!isReplicateApiError(error)) { |
| 243 | return; |
| 244 | } |
| 245 | |
| 246 | if (!shouldRetry(error.request.method, error.response.status)) { |
| 247 | return { |
| 248 | skipRetrying: true, |
| 249 | }; |
| 250 | } |
| 251 | |
| 252 | // see: https://github.com/replicate/replicate-javascript/blob/4b0d9cb0e226fab3d3d31de5b32261485acf5626/lib/util.js#L43 |
| 253 | |
| 254 | const retryAfter = error.response.headers.get("retry-after"); |
| 255 | |
| 256 | if (retryAfter) { |
| 257 | const resetDate = new Date(retryAfter); |
| 258 | |
| 259 | if (!Number.isNaN(resetDate.getTime())) { |
| 260 | return { |
| 261 | retryAt: resetDate, |
| 262 | error, |
| 263 | }; |
| 264 | } |
| 265 | } |
| 266 | |
| 267 | const rateLimitRemaining = error.response.headers.get("ratelimit-remaining"); |
| 268 | const rateLimitReset = error.response.headers.get("ratelimit-reset"); |
| 269 | |
| 270 | if (rateLimitRemaining === "0" && rateLimitReset) { |
| 271 | const resetDate = new Date(Number(rateLimitReset) * 1000); |
| 272 | |
| 273 | if (!Number.isNaN(resetDate.getTime())) { |
| 274 | return { |
| 275 | retryAt: resetDate, |
| 276 | error, |
| 277 | }; |
| 278 | } |
| 279 | } |
| 280 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…