diff --git a/index.js b/index.js index b477e225..67cfc19f 100644 --- a/index.js +++ b/index.js @@ -60,13 +60,14 @@ Pool.prototype.connect = function (cb) { this.log('acquire client') client.release = function (err) { - if (err) { - this.log('release client. error:', err) - this.pool.destroy(client) - } - this.log('release client') delete client.release - this.pool.release(client) + if (err) { + this.log('destroy client. error:', err) + this.pool.destroy(client) + } else { + this.log('release client') + this.pool.release(client) + } }.bind(this) if (cb) { diff --git a/test/index.js b/test/index.js index 364d62f2..e03c5f23 100644 --- a/test/index.js +++ b/test/index.js @@ -89,7 +89,18 @@ describe('pool', function () { })) it('recovers from all errors', co.wrap(function * () { - var pool = new Pool({ poolSize: 9 }) + var pool = new Pool({ + poolSize: 9, + log: function (str, level) { + // Custom logging function to ensure we are not causing errors or warnings + // inside the `generic-pool` library. + if (level === 'error' || level === 'warn') { + expect().fail('An error or warning was logged from the generic pool library.\n' + + 'Level: ' + level + '\n' + + 'Message: ' + str + '\n') + } + } + }) var count = 0 while (count++ < 30) {