(err: unknown, wire?: WireApi)
| 159 | } |
| 160 | |
| 161 | export function classifyError(err: unknown, wire?: WireApi): RetryDecision { |
| 162 | if (err instanceof Error && (err.name === 'AbortError' || err.message === 'aborted')) { |
| 163 | return { retry: false, reason: 'aborted' }; |
| 164 | } |
| 165 | const status = extractStatus(err); |
| 166 | if (status !== undefined) { |
| 167 | const byStatus = classifyByStatus(status, err, wire); |
| 168 | if (byStatus) return byStatus; |
| 169 | } |
| 170 | const byNet = classifyByNetwork(err); |
| 171 | if (byNet) return byNet; |
| 172 | return { retry: false, reason: errorMessage(err) }; |
| 173 | } |
| 174 | |
| 175 | function extractStatus(err: unknown): number | undefined { |
| 176 | if (typeof err !== 'object' || err === null) return undefined; |
no test coverage detected