mirror of
https://github.com/danbulant/discord.js
synced 2026-05-26 05:22:15 +00:00
Fix sequential rate limiting
This commit is contained in:
parent
9365272baf
commit
6495df50f9
2 changed files with 12 additions and 3 deletions
|
|
@ -38,7 +38,6 @@ class RESTManager {
|
|||
|
||||
makeRequest(method, url, auth, data, file) {
|
||||
const apiRequest = new APIRequest(this, method, url, auth, data, file);
|
||||
|
||||
if (!this.handlers[apiRequest.route]) {
|
||||
const RequestHandlerType = this.getRequestHandler();
|
||||
this.handlers[apiRequest.route] = new RequestHandlerType(this, apiRequest.route);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,12 @@ class SequentialRequestHandler extends RequestHandler {
|
|||
* @type {number}
|
||||
*/
|
||||
this.timeDifference = 0;
|
||||
|
||||
/**
|
||||
* Whether the queue is being processed or not
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.busy = false;
|
||||
}
|
||||
|
||||
push(request) {
|
||||
|
|
@ -40,6 +46,7 @@ class SequentialRequestHandler extends RequestHandler {
|
|||
* @returns {Promise<?Object|Error>}
|
||||
*/
|
||||
execute(item) {
|
||||
this.busy = true;
|
||||
return new Promise(resolve => {
|
||||
item.request.gen().end((err, res) => {
|
||||
if (res && res.headers) {
|
||||
|
|
@ -82,8 +89,11 @@ class SequentialRequestHandler extends RequestHandler {
|
|||
|
||||
handle() {
|
||||
super.handle();
|
||||
if (this.remaining === 0 || this.queue.length === 0 || this.globalLimit) return;
|
||||
this.execute(this.queue.shift()).then(() => this.handle());
|
||||
if (this.busy || this.remaining === 0 || this.queue.length === 0 || this.globalLimit) return;
|
||||
this.execute(this.queue.shift()).then(() => {
|
||||
this.busy = false;
|
||||
this.handle();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue