diff --git a/changelog.md b/changelog.md index 791b968c6c3..3de9fff9923 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,7 @@ Features Bugfixes - Fixed not always copying subscribe unsubscribe arguments +- Fixed emitting internal errors while reconnecting with auth ## v.2.7.1 - 14 Mar, 2017 diff --git a/index.js b/index.js index 2b93b5aa562..c3c3e1ec2ba 100644 --- a/index.js +++ b/index.js @@ -228,6 +228,8 @@ function create_parser (self) { RedisClient.prototype.create_stream = function () { var self = this; + var first_attempt = !this.stream; + // Init parser this.reply_parser = create_parser(this); @@ -304,7 +306,13 @@ RedisClient.prototype.create_stream = function () { // Fire the command before redis is connected to be sure it's the first fired command if (this.auth_pass !== undefined) { this.ready = true; - this.auth(this.auth_pass); + // Fail silently as we might not be able to connect + this.auth(this.auth_pass, function (err) { + if (err && first_attempt) { + self.command_queue.get(0).callback = noop; + self.emit('error', err); + } + }); this.ready = false; } }; diff --git a/test/auth.spec.js b/test/auth.spec.js index 8411a4b618d..5697c1663b3 100644 --- a/test/auth.spec.js +++ b/test/auth.spec.js @@ -260,9 +260,10 @@ describe('client authentication', function () { password: 'wrong_password', parser: parser }); - client.once('error', function (err) { + client.on('error', function (err) { assert.strictEqual(err.message, 'ERR invalid password'); - done(); + // Make sure no other errors are reported + setTimeout(done, 50); }); });