Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 9x 9x 57x 57x 57x 9x 47x 47x 47x 47x 47x 2x 6x 29x 9x 10x 10x 10x 4x | import { ErrorPlainResponse, ErrorResponse } from '../types'
import { getRetryAfter } from './getRetryAfter'
export class SdkError extends Error {
constructor(
message: string,
readonly response?: Response,
cause?: Error
) {
super(message, { cause })
this.name = this.constructor.name
}
}
export class RequestError<Code extends number = number, Body = unknown> extends SdkError {
// HTTP Status code
readonly statusCode: Code
// API error code
readonly errorCode: string
// API error response
readonly responseBody: Body
// Raw HTTP response
override readonly response: Response
constructor(message: string, body: Body, statusCode: Code, errorCode: string, response: Response) {
super(message, response)
this.responseBody = body
this.response = response
this.errorCode = errorCode
this.statusCode = statusCode
}
static unknown(response: Response) {
return new RequestError('Unknown error', undefined, response.status, response.statusText, response)
}
static fromPlainError(body: ErrorPlainResponse, response: Response) {
return new RequestError(body.error, body, response.status, response.statusText, response)
}
static fromErrorResponse(body: ErrorResponse, response: Response) {
return new RequestError(body.error.message, body, response.status, body.error.code, response)
}
}
/**
* Error that indicate that the request was throttled.
* */
export class TooManyRequestsError extends RequestError<429, ErrorResponse> {
/**
* Number of seconds to wait before retrying the request.
* @remarks
* The value is parsed from the `Retry-After` header of the response.
*/
readonly retryAfter: number = 0
constructor(body: ErrorResponse, response: Response) {
super(body.error.message, body, 429, body.error.code, response)
this.retryAfter = getRetryAfter(response)
}
static fromPlain(error: ErrorPlainResponse, response: Response) {
return new TooManyRequestsError(
{
error: {
message: error.error,
code: 'TooManyRequests',
},
},
response
)
}
}
|