Skip to content

Commit 8032fba

Browse files
authored
Catch errors client throws in pool (#2569)
* Catch errors client throws in pool * Add a test This test _should be_ right
1 parent 3e53d06 commit 8032fba

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

packages/pg-pool/index.js

+18-14
Original file line numberDiff line numberDiff line change
@@ -406,20 +406,24 @@ class Pool extends EventEmitter {
406406

407407
client.once('error', onError)
408408
this.log('dispatching query')
409-
client.query(text, values, (err, res) => {
410-
this.log('query dispatched')
411-
client.removeListener('error', onError)
412-
if (clientReleased) {
413-
return
414-
}
415-
clientReleased = true
416-
client.release(err)
417-
if (err) {
418-
return cb(err)
419-
} else {
420-
return cb(undefined, res)
421-
}
422-
})
409+
try {
410+
client.query(text, values, (err, res) => {
411+
this.log('query dispatched')
412+
client.removeListener('error', onError)
413+
if (clientReleased) {
414+
return
415+
}
416+
clientReleased = true
417+
client.release(err)
418+
if (err) {
419+
return cb(err)
420+
} else {
421+
return cb(undefined, res)
422+
}
423+
})
424+
} catch (err) {
425+
return cb(err)
426+
}
423427
})
424428
return response.result
425429
}

packages/pg-pool/test/error-handling.js

+11
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,17 @@ describe('pool error handling', function () {
3737
})
3838
})
3939

40+
it('Catches errors in client.query', async function () {
41+
await expect((new Pool()).query(null)).to.throwError()
42+
await expect(async () => {
43+
try {
44+
await (new Pool()).query(null)
45+
} catch (e) {
46+
console.log(e)
47+
}
48+
}).not.to.throwError()
49+
})
50+
4051
describe('calling release more than once', () => {
4152
it(
4253
'should throw each time',

0 commit comments

Comments
 (0)