(responseBody: string | undefined)
| 34 | |
| 35 | // extract retry delay from response body for google/gemini errors |
| 36 | function extractRetryDelayFromBody(responseBody: string | undefined): number | undefined { |
| 37 | if (!responseBody) return undefined |
| 38 | try { |
| 39 | const body = JSON.parse(responseBody) |
| 40 | // handle google error format: { error: { message: "...reset after Xs..." } } |
| 41 | // or array format: [{ error: { message: "..." } }] |
| 42 | const errorObj = Array.isArray(body) ? body[0]?.error : body?.error |
| 43 | if (errorObj?.message) { |
| 44 | return extractGoogleRetryDelay(errorObj.message) |
| 45 | } |
| 46 | } catch {} |
| 47 | return undefined |
| 48 | } |
| 49 | |
| 50 | export function delay(attempt: number, error?: MessageV2.APIError) { |
| 51 | if (error) { |
no test coverage detected