diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 1f03c6b4e..ab3ef960f 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -46,6 +46,7 @@ var Client = (function (_EventEmitter) { this.options = options || {}; this.options.compress = options.compress || true; this.options.revive = options.revive || false; + this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.internal = new _InternalClient2["default"](this); } diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 3734e6130..6c1b8f905 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -133,11 +133,11 @@ var InternalClient = (function () { ret.end(function (error, data) { if (error) { error.response.error.status = 429; - if (error.response && error.response.error && error.response.error.status && error.response.error.status === 429) { + if (!_this.client.options.rate_limit_as_error && error.response && error.response.error && error.response.error.status && error.response.error.status === 429) { + if (data.headers["retry-after"] || data.headers["Retry-After"]) { var toWait = data.headers["retry-after"] || data.headers["Retry-After"]; toWait = parseInt(toWait); - console.log("waiting for", toWait); setTimeout(function () { _this.apiRequest.apply(_this, _arguments).then(resolve)["catch"](reject); }, toWait); diff --git a/src/Client/Client.js b/src/Client/Client.js index e86cfebc0..124fc65ae 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -21,6 +21,7 @@ export default class Client extends EventEmitter { this.options = options || {}; this.options.compress = options.compress || true; this.options.revive = options.revive || false; + this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.internal = new InternalClient(this); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 51a95fc46..d45ca60c2 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -66,7 +66,13 @@ export default class InternalClient { ret.end((error, data) => { if (error) { error.response.error.status = 429; - if (error.response && error.response.error && error.response.error.status && error.response.error.status === 429) { + if (!this.client.options.rate_limit_as_error && + error.response && + error.response.error && + error.response.error.status + && error.response.error.status === 429 + ) { + if(data.headers["retry-after"] || data.headers["Retry-After"]){ var toWait = data.headers["retry-after"] || data.headers["Retry-After"]; toWait = parseInt(toWait); @@ -76,6 +82,7 @@ export default class InternalClient { } else { return reject(error); } + } else { return reject(error); }