mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 02:23:31 +01:00
backport(ClientOptions): add retryLimit (#2869)
This commit is contained in:
@@ -509,7 +509,7 @@ class Client extends EventEmitter {
|
||||
* @param {ClientOptions} [options=this.options] Options to validate
|
||||
* @private
|
||||
*/
|
||||
_validateOptions(options = this.options) {
|
||||
_validateOptions(options = this.options) { // eslint-disable-line complexity
|
||||
if (typeof options.shardCount !== 'number' || isNaN(options.shardCount)) {
|
||||
throw new TypeError('The shardCount option must be a number.');
|
||||
}
|
||||
@@ -540,6 +540,9 @@ class Client extends EventEmitter {
|
||||
throw new TypeError('The restWsBridgeTimeout option must be a number.');
|
||||
}
|
||||
if (!(options.disabledEvents instanceof Array)) throw new TypeError('The disabledEvents option must be an Array.');
|
||||
if (typeof options.retryLimit !== 'number' || isNaN(options.retryLimit)) {
|
||||
throw new TypeError('The retryLimit options must be a number.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ class RESTManager {
|
||||
}
|
||||
reject(error);
|
||||
},
|
||||
retries: 0,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -42,11 +42,17 @@ class BurstRequestHandler extends RequestHandler {
|
||||
this.resetTimeout = null;
|
||||
}, Number(res.headers['retry-after']) + this.client.options.restTimeOffset);
|
||||
} else if (err.status >= 500 && err.status < 600) {
|
||||
this.queue.unshift(item);
|
||||
this.resetTimeout = this.client.setTimeout(() => {
|
||||
if (item.retries === this.client.options.retryLimit) {
|
||||
item.reject(err);
|
||||
this.handle();
|
||||
this.resetTimeout = null;
|
||||
}, 1e3 + this.client.options.restTimeOffset);
|
||||
} else {
|
||||
item.retries++;
|
||||
this.queue.unshift(item);
|
||||
this.resetTimeout = this.client.setTimeout(() => {
|
||||
this.handle();
|
||||
this.resetTimeout = null;
|
||||
}, 1e3 + this.client.options.restTimeOffset);
|
||||
}
|
||||
} else {
|
||||
item.reject(err.status >= 400 && err.status < 500 ?
|
||||
new DiscordAPIError(res.request.path, res.body, res.request.method) : err);
|
||||
|
||||
@@ -72,8 +72,14 @@ class SequentialRequestHandler extends RequestHandler {
|
||||
}, Number(res.headers['retry-after']) + this.client.options.restTimeOffset);
|
||||
if (res.headers['x-ratelimit-global']) this.globalLimit = true;
|
||||
} else if (err.status >= 500 && err.status < 600) {
|
||||
this.queue.unshift(item);
|
||||
this.client.setTimeout(resolve, 1e3 + this.client.options.restTimeOffset);
|
||||
if (item.retries === this.client.options.retryLimit) {
|
||||
item.reject(err);
|
||||
resolve();
|
||||
} else {
|
||||
item.retries++;
|
||||
this.queue.unshift(item);
|
||||
this.client.setTimeout(resolve, 1e3 + this.client.options.restTimeOffset);
|
||||
}
|
||||
} else {
|
||||
item.reject(err.status >= 400 && err.status < 500 ?
|
||||
new DiscordAPIError(res.request.path, res.body, res.request.method) : err);
|
||||
|
||||
Reference in New Issue
Block a user