diff --git a/src/client/Client.js b/src/client/Client.js index f81c72954..58e7f595f 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -234,14 +234,17 @@ class Client extends EventEmitter { * @returns {Promise} */ destroy() { - return this.manager.destroy().then(() => { - for (const t of this._timeouts) clearTimeout(t); - for (const i of this._intervals) clearInterval(i); - this._timeouts.clear(); - this._intervals.clear(); - this.token = null; - this.email = null; - this.password = null; + return new Promise((resolve, reject) => { + this.manager.destroy().then(() => { + for (const t of this._timeouts) clearTimeout(t); + for (const i of this._intervals) clearInterval(i); + this._timeouts = []; + this._intervals = []; + this.token = null; + this.email = null; + this.password = null; + resolve(); + }).catch(reject); }); } diff --git a/src/client/ClientManager.js b/src/client/ClientManager.js index 5e2a42b04..89acc523a 100644 --- a/src/client/ClientManager.js +++ b/src/client/ClientManager.js @@ -58,11 +58,14 @@ class ClientManager { } destroy() { - let p = Promise.resolve(); - if (!this.client.user.bot) { - p = this.client.rest.methods.logout(); - } - return p.then(() => this.client.ws.destroy()); + return new Promise((resolve) => { + if (!this.client.user.bot) { + this.client.rest.methods.logout().then(resolve); + } else { + this.client.ws.destroy(); + resolve(); + } + }); } } diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index 1555d4e95..884076fb1 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -36,7 +36,7 @@ class RESTMethods { } logout() { - return this.rest.makeRequest('post', Constants.Endpoints.logout, true, {}); + return this.rest.makeRequest('post', Constants.Endpoints.logout, true); } getGateway() { diff --git a/test/destroy.js b/test/destroy.js deleted file mode 100644 index 08f934de0..000000000 --- a/test/destroy.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const Discord = require('../'); - -const client = new Discord.Client({ fetch_all_members: false, api_request_method: 'sequential' }); - -const { email, password, token } = require('./auth.json'); - -let p = client.login(token); -p = p.then(() => client.destroy()); -p = p.then(() => client.login(token)); -p = p.then(() => client.destroy());