diff --git a/src/client/Client.js b/src/client/Client.js index 51a4e9eeb..543163633 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -273,7 +273,7 @@ class Client extends EventEmitter { * @example * client.login('my token'); */ - login(token) { + login(token = this.token) { return this.rest.methods.login(token); } diff --git a/src/client/ClientManager.js b/src/client/ClientManager.js index 538411079..0f2480cc1 100644 --- a/src/client/ClientManager.js +++ b/src/client/ClientManager.js @@ -43,6 +43,7 @@ class ClientManager { const gateway = `${res.url}/?v=${protocolVersion}&encoding=${WebSocketConnection.ENCODING}`; this.client.emit(Constants.Events.DEBUG, `Using gateway ${gateway}`); this.client.ws.connect(gateway); + this.client.ws.connection.once('error', reject); this.client.ws.connection.once('close', event => { if (event.code === 4004) reject(new Error(Constants.Errors.BAD_LOGIN)); if (event.code === 4010) reject(new Error(Constants.Errors.INVALID_SHARD)); diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index f44c8cd85..3a8885335 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -29,9 +29,13 @@ class RESTMethods { login(token = this.client.token) { return new Promise((resolve, reject) => { - if (typeof token !== 'string') throw new Error(Constants.Errors.INVALID_TOKEN); + if (!token || typeof token !== 'string') throw new Error(Constants.Errors.INVALID_TOKEN); token = token.replace(/^Bot\s*/i, ''); - this.client.manager.connectToWebSocket(token, resolve, reject); + this.client.manager.connectToWebSocket(token, resolve, reject) + .catch(e => { + this.client.destroy(); + return Promise.reject(e); + }); }); }