Use Date headers to offset time differences to fix rate limiting

This commit is contained in:
Amish Shah
2016-08-19 18:28:43 +01:00
parent 00be14b5d1
commit fd64fb0a82

View File

@@ -16,6 +16,13 @@ module.exports = class SequentialRequestHandler extends RequestHandler {
* @type {Boolean}
*/
this.waiting = false;
/**
* The time difference between Discord's Dates and the local computer's Dates. A positive number means the local
* computer's time is ahead of Discord's.
* @type {Number}
*/
this.timeDifference = 0;
}
push(request) {
@@ -35,6 +42,7 @@ module.exports = class SequentialRequestHandler extends RequestHandler {
this.requestLimit = res.headers['x-ratelimit-limit'];
this.requestResetTime = Number(res.headers['x-ratelimit-reset']) * 1000;
this.requestRemaining = Number(res.headers['x-ratelimit-remaining']);
this.timeDifference = Date.now() - new Date(res.headers.date).getTime();
}
if (err) {
this.waiting = false;
@@ -48,7 +56,7 @@ module.exports = class SequentialRequestHandler extends RequestHandler {
setTimeout(() => {
this.waiting = false;
resolve(data);
}, (this.requestResetTime - Date.now()) + 4000);
}, (this.requestResetTime - Date.now()) + this.timeDifference + 1000);
} else {
this.waiting = false;
resolve(data);