diff --git a/packages/pg-pool/index.js b/packages/pg-pool/index.js index 27875c1f..eef490f9 100644 --- a/packages/pg-pool/index.js +++ b/packages/pg-pool/index.js @@ -252,16 +252,7 @@ class Pool extends EventEmitter { this.emit('acquire', client) - let released = false - - client.release = (err) => { - if (released) { - throwOnDoubleRelease() - } - - released = true - this._release(client, idleListener, err) - } + client.release = this._releaseOnce(client, idleListener) client.removeListener('error', idleListener) @@ -287,6 +278,20 @@ class Pool extends EventEmitter { } } + // returns a function that wraps _release and throws if called more than once + _releaseOnce(client, idleListener) { + let released = false + + return (err) => { + if (released) { + throwOnDoubleRelease() + } + + released = true + this._release(client, idleListener, err) + } + } + // release a client back to the poll, include an error // to remove it from the pool _release(client, idleListener, err) {