This repository was archived by the owner on Apr 17, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +17
-10
lines changed
Expand file tree Collapse file tree 2 files changed +17
-10
lines changed Original file line number Diff line number Diff line change @@ -7,8 +7,7 @@ export const CordisRestError = makeCordisError(
77 {
88 retryLimitExceeded : ( request : string , attempts : number ) => `Tried to "${ request } " for ${ attempts } times but all of them failed` ,
99 mutexLock : ( route : string ) => `A mutex for the "${ route } " bucket locked up but was told to not wait` ,
10- rateLimited : ( request : string ) => `A ratelimit was hit/prevented while "${ request } "` ,
11- internal : ( request : string ) => `Discord raised an internal error on "${ request } "`
10+ rateLimited : ( request : string ) => `A ratelimit was hit/prevented while "${ request } "`
1211 }
1312) ;
1413
Original file line number Diff line number Diff line change @@ -246,6 +246,8 @@ export class Rest extends EventEmitter {
246246 const isGet = options . method . toLowerCase ( ) === 'get' ;
247247 const shouldCache = options . cache && isGet ;
248248
249+ let rejected : Promise < never > ;
250+
249251 for ( let retries = 0 ; retries <= this . retries ; retries ++ ) {
250252 try {
251253 if ( shouldCache && this . cache . has ( options . path ) ) {
@@ -273,21 +275,27 @@ export class Rest extends EventEmitter {
273275 const isRatelimit = e instanceof CordisRestError && e . code === 'rateLimited' ;
274276 isRetryAfterRatelimit = isRatelimit ;
275277
276- if (
277- e instanceof HTTPError ||
278- e . name === 'AbortError' ||
279- ( isRatelimit && ! options . retryAfterRatelimit )
280- ) {
278+ if ( e . name === 'AbortError' ) {
281279 return Promise . reject ( e ) ;
282280 }
283281
284- if ( e instanceof CordisRestError && e . code === 'internal' ) {
285- await halt ( 1000 ) ;
282+ if ( isRatelimit && ! options . retryAfterRatelimit ) {
283+ return Promise . reject ( e ) ;
286284 }
285+
286+ if ( e instanceof HTTPError ) {
287+ if ( e . response . status >= 500 && e . response . status < 600 ) {
288+ await halt ( 1000 ) ;
289+ } else {
290+ return Promise . reject ( e ) ;
291+ }
292+ }
293+
294+ rejected = Promise . reject ( e ) ;
287295 }
288296 }
289297
290- return Promise . reject ( new CordisRestError ( 'retryLimitExceeded' , ` ${ options . method . toUpperCase ( ) } ${ options . path } ` , this . retries ) ) ;
298+ return rejected ! ;
291299 }
292300
293301 /**
You can’t perform that action at this time.
0 commit comments