Skip to content

Commit d87c2ed

Browse files
committed
Ensure release isn't called more than once
1 parent 3cb8d46 commit d87c2ed

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,20 @@ const callPgFunc = (name, params, req) => {
100100
let q = `SELECT * FROM ${name}($1);`
101101
if (!pgPool) return Promise.reject(new Error('No database configured'))
102102
return pgPool.connect().then((client) => {
103-
let close = () => { if (client && client.release) client.release(true) }
103+
let release = (fauxErr) => {
104+
if (!client || !client.release || client._scrud_released) return
105+
client._scrud_released = true
106+
client.release(fauxErr)
107+
}
108+
let close = () => release(true)
104109
if (req && req.on) req.once('close', close)
105110
return client.query(q, [params]).then((data) => {
106111
if (req && req.removeListener) req.removeListener('close', close)
107-
client.release()
112+
release()
108113
return Promise.resolve((data.rows[0] || {})[name] || [])
109114
}).catch((err) => {
110115
if (req && req.removeListener) req.removeListener('close', close)
111-
client.release()
116+
release()
112117
return Promise.reject(err)
113118
})
114119
}).catch((err) => {

0 commit comments

Comments
 (0)