Skip to content

Commit e8bb3b8

Browse files
committed
Fix failures in sql.reserve() connect shadowing real errors
fixes #778 #923 #944 #1028
1 parent 76c13f2 commit e8bb3b8

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/connection.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
381381
function errored(err) {
382382
stream && (stream.destroy(err), stream = null)
383383
query && queryError(query, err)
384-
initial && (queryError(initial, err), initial = null)
384+
initial && (initial.reserve ? initial.reject(err) : queryError(initial, err), initial = null)
385385
}
386386

387387
function queryError(query, err) {

src/index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,10 @@ function Postgres(a, b) {
204204
const queue = Queue()
205205
const c = open.length
206206
? open.shift()
207-
: await new Promise(r => {
208-
queries.push({ reserve: r })
209-
closed.length && connect(closed.shift())
207+
: await new Promise((resolve, reject) => {
208+
const query = { reserve: resolve, reject }
209+
queries.push(query)
210+
closed.length && connect(closed.shift(), query)
210211
})
211212

212213
move(c, reserved)

tests/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,14 @@ t('Proper handling of null Errors', async() => {
445445
]
446446
})
447447

448+
t('Ensure reserve throws proper error', async() => {
449+
const sql = postgres({ socket: () => { throw 'wat' }, idle_timeout })
450+
451+
return [
452+
'wat', await sql.reserve().catch(e => e)
453+
]
454+
})
455+
448456
t('Login without password', async() => {
449457
return [true, (await postgres({ ...options, ...login })`select true as x`)[0].x]
450458
})

0 commit comments

Comments
 (0)