Skip to content

Commit cd5ec59

Browse files
authored
fix(pg-cloudflare): safely end closed sockets (#3735)
1 parent 816d073 commit cd5ec59

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

packages/pg-cloudflare/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export class CloudflareSocket extends EventEmitter {
107107
end(data = Buffer.alloc(0), encoding: BufferEncoding = 'utf8', callback: (...args: unknown[]) => void = () => {}) {
108108
log('ending CF socket')
109109
this.write(data, encoding, (err) => {
110-
this._cfSocket!.close()
110+
this._cfSocket?.close()
111111
if (callback) callback(err)
112112
})
113113
return this

packages/pg-esm-test/pg-cloudflare.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,16 @@ describe('pg-cloudflare', () => {
66
it('should export CloudflareSocket constructor', () => {
77
assert.ok(new CloudflareSocket())
88
})
9+
10+
it('should safely end after the underlying socket has closed', async () => {
11+
const socket = new CloudflareSocket()
12+
const underlyingSocket = { closed: Promise.resolve() }
13+
socket._cfSocket = underlyingSocket
14+
socket._addClosedHandler()
15+
16+
await underlyingSocket.closed
17+
assert.equal(socket._cfSocket, null)
18+
19+
assert.doesNotThrow(() => socket.end())
20+
})
921
})

0 commit comments

Comments
 (0)