@@ -17,9 +17,9 @@ An error to be thrown when a request fails.
1717Contains a `code` property with error class code, like `ECONNREFUSED`.
1818*/
1919export class RequestError < T = unknown > extends Error {
20+ override name = 'RequestError' ;
21+ code = 'ERR_GOT_REQUEST_ERROR' ;
2022 input ?: string ;
21-
22- code : string ;
2323 override stack ! : string ;
2424 declare readonly options : Options ;
2525 readonly response ?: Response < T > ;
@@ -30,8 +30,10 @@ export class RequestError<T = unknown> extends Error {
3030 super ( message , { cause : error } ) ;
3131 Error . captureStackTrace ( this , this . constructor ) ;
3232
33- this . name = 'RequestError' ;
34- this . code = error . code ?? 'ERR_GOT_REQUEST_ERROR' ;
33+ if ( error . code ) {
34+ this . code = error . code ;
35+ }
36+
3537 this . input = ( error as any ) . input ;
3638
3739 if ( isRequest ( self ) ) {
@@ -73,14 +75,14 @@ An error to be thrown when the server redirects you more than ten times.
7375Includes a `response` property.
7476*/
7577export class MaxRedirectsError extends RequestError {
78+ override name = 'MaxRedirectsError' ;
79+ override code = 'ERR_TOO_MANY_REDIRECTS' ;
7680 declare readonly response : Response ;
7781 declare readonly request : Request ;
7882 declare readonly timings : Timings ;
7983
8084 constructor ( request : Request ) {
8185 super ( `Redirected ${ request . options . maxRedirects } times. Aborting.` , { } , request ) ;
82- this . name = 'MaxRedirectsError' ;
83- this . code = 'ERR_TOO_MANY_REDIRECTS' ;
8486 }
8587}
8688
@@ -91,14 +93,14 @@ Includes a `response` property.
9193// TODO: Change `HTTPError<T = any>` to `HTTPError<T = unknown>` in the next major version to enforce type usage.
9294// eslint-disable-next-line @typescript-eslint/naming-convention
9395export class HTTPError < T = any > extends RequestError < T > {
96+ override name = 'HTTPError' ;
97+ override code = 'ERR_NON_2XX_3XX_RESPONSE' ;
9498 declare readonly response : Response < T > ;
9599 declare readonly request : Request ;
96100 declare readonly timings : Timings ;
97101
98102 constructor ( response : PlainResponse ) {
99103 super ( `Request failed with status code ${ response . statusCode } (${ response . statusMessage ! } ): ${ response . request . options . method } ${ response . request . options . url ! . toString ( ) } ` , { } , response . request ) ;
100- this . name = 'HTTPError' ;
101- this . code = 'ERR_NON_2XX_3XX_RESPONSE' ;
102104 }
103105}
104106
@@ -107,25 +109,29 @@ An error to be thrown when a cache method fails.
107109For example, if the database goes down or there's a filesystem error.
108110*/
109111export class CacheError extends RequestError {
112+ override name = 'CacheError' ;
110113 declare readonly request : Request ;
111114
112115 constructor ( error : Error , request : Request ) {
113116 super ( error . message , error , request ) ;
114- this . name = 'CacheError' ;
115- this . code = this . code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_CACHE_ACCESS' : this . code ;
117+ if ( this . code === 'ERR_GOT_REQUEST_ERROR' ) {
118+ this . code = 'ERR_CACHE_ACCESS' ;
119+ }
116120 }
117121}
118122
119123/**
120124An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
121125*/
122126export class UploadError extends RequestError {
127+ override name = 'UploadError' ;
123128 declare readonly request : Request ;
124129
125130 constructor ( error : Error , request : Request ) {
126131 super ( error . message , error , request ) ;
127- this . name = 'UploadError' ;
128- this . code = this . code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_UPLOAD' : this . code ;
132+ if ( this . code === 'ERR_GOT_REQUEST_ERROR' ) {
133+ this . code = 'ERR_UPLOAD' ;
134+ }
129135 }
130136}
131137
@@ -134,13 +140,13 @@ An error to be thrown when the request is aborted due to a timeout.
134140Includes an `event` and `timings` property.
135141*/
136142export class TimeoutError extends RequestError {
143+ override name = 'TimeoutError' ;
137144 declare readonly request : Request ;
138145 override readonly timings : Timings ;
139146 readonly event : string ;
140147
141148 constructor ( error : TimedOutTimeoutError , timings : Timings , request : Request ) {
142149 super ( error . message , error , request ) ;
143- this . name = 'TimeoutError' ;
144150 this . event = error . event ;
145151 this . timings = timings ;
146152 }
@@ -150,35 +156,39 @@ export class TimeoutError extends RequestError {
150156An error to be thrown when reading from response stream fails.
151157*/
152158export class ReadError extends RequestError {
159+ override name = 'ReadError' ;
153160 declare readonly request : Request ;
154161 declare readonly response : Response ;
155162 declare readonly timings : Timings ;
156163
157164 constructor ( error : Error , request : Request ) {
158165 super ( error . message , error , request ) ;
159- this . name = 'ReadError' ;
160- this . code = this . code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_READING_RESPONSE_STREAM' : this . code ;
166+ if ( this . code === 'ERR_GOT_REQUEST_ERROR' ) {
167+ this . code = 'ERR_READING_RESPONSE_STREAM' ;
168+ }
161169 }
162170}
163171
164172/**
165173An error which always triggers a new retry when thrown.
166174*/
167175export class RetryError extends RequestError {
176+ override name = 'RetryError' ;
177+ override code = 'ERR_RETRYING' ;
178+
168179 constructor ( request : Request ) {
169180 super ( 'Retrying' , { } , request ) ;
170- this . name = 'RetryError' ;
171- this . code = 'ERR_RETRYING' ;
172181 }
173182}
174183
175184/**
176185An error to be thrown when the request is aborted by AbortController.
177186*/
178187export class AbortError extends RequestError {
188+ override name = 'AbortError' ;
189+ override code = 'ERR_ABORTED' ;
190+
179191 constructor ( request : Request ) {
180192 super ( 'This operation was aborted.' , { } , request ) ;
181- this . code = 'ERR_ABORTED' ;
182- this . name = 'AbortError' ;
183193 }
184194}
0 commit comments