From b47373300b1c1abb28756f6719f1b713fc254fe1 Mon Sep 17 00:00:00 2001 From: Francisco Presencia Date: Wed, 26 Nov 2025 22:18:14 +0900 Subject: [PATCH 1/8] Return the client instance in the `connect()` method --- packages/pg/lib/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pg/lib/client.js b/packages/pg/lib/client.js index 903db6c66..ec4b4ffd3 100644 --- a/packages/pg/lib/client.js +++ b/packages/pg/lib/client.js @@ -213,7 +213,7 @@ class Client extends EventEmitter { if (error) { reject(error) } else { - resolve() + resolve(this) } }) }) From 0994e87181f6e871dda682d832d938258af7050a Mon Sep 17 00:00:00 2001 From: Francisco Date: Sat, 24 Jan 2026 18:10:17 +0900 Subject: [PATCH 2/8] Added one basic test --- packages/pg/test/integration/client/promise-api-tests.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index a536ce44a..a76c65aaa 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -13,6 +13,14 @@ suite.test('valid connection completes promise', () => { }) }) +suite.test('valid connection returns the client', () => { + const client = new pg.Client() + return client.connect().then((clientInside) => { + assert.equal(client, clientInside) + return client.end().then(() => {}) + }) +}) + suite.test('valid connection completes promise', () => { const client = new pg.Client() return client.connect().then(() => { From 22aaa4dd8793622ef031a19051be9458c5de54e9 Mon Sep 17 00:00:00 2001 From: Francisco Date: Sat, 24 Jan 2026 18:12:00 +0900 Subject: [PATCH 3/8] Renamed --- packages/pg/test/integration/client/promise-api-tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index a76c65aaa..bbe0a2e4e 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -13,7 +13,7 @@ suite.test('valid connection completes promise', () => { }) }) -suite.test('valid connection returns the client', () => { +suite.test('valid connection returns the client in a promise', () => { const client = new pg.Client() return client.connect().then((clientInside) => { assert.equal(client, clientInside) From 70cdced052aceab95c1bb4fed4afdc929f82b270 Mon Sep 17 00:00:00 2001 From: Francisco Date: Sat, 24 Jan 2026 18:22:39 +0900 Subject: [PATCH 4/8] Testing the result --- packages/pg/test/integration/client/promise-api-tests.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index bbe0a2e4e..34319e260 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -16,7 +16,8 @@ suite.test('valid connection completes promise', () => { suite.test('valid connection returns the client in a promise', () => { const client = new pg.Client() return client.connect().then((clientInside) => { - assert.equal(client, clientInside) + console.log(clientInside) + // assert.equal(client, clientInside) return client.end().then(() => {}) }) }) From 695d9773137ab5577b0277d454e10395a71597b8 Mon Sep 17 00:00:00 2001 From: Francisco Date: Sat, 24 Jan 2026 18:47:46 +0900 Subject: [PATCH 5/8] Added equality check --- packages/pg/test/integration/client/promise-api-tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index 34319e260..bbe0a2e4e 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -16,8 +16,7 @@ suite.test('valid connection completes promise', () => { suite.test('valid connection returns the client in a promise', () => { const client = new pg.Client() return client.connect().then((clientInside) => { - console.log(clientInside) - // assert.equal(client, clientInside) + assert.equal(client, clientInside) return client.end().then(() => {}) }) }) From 2ac07ba2d54d64eac1803e9f240fe0c83f934780 Mon Sep 17 00:00:00 2001 From: Francisco Date: Sat, 24 Jan 2026 18:49:15 +0900 Subject: [PATCH 6/8] Simplified docs for connecting --- docs/pages/index.mdx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx index a6ba3ef48..77a410626 100644 --- a/docs/pages/index.mdx +++ b/docs/pages/index.mdx @@ -44,8 +44,7 @@ The simplest possible way to connect, query, and disconnect is with async/await: ```js import { Client } from 'pg' -const client = new Client() -await client.connect() +const client = await new Client().connect(); const res = await client.query('SELECT $1::text as message', ['Hello world!']) console.log(res.rows[0].message) // Hello world! @@ -83,5 +82,3 @@ console.log(res.rows[0].message) // Hello world! ``` Our real-world apps are almost always more complicated than that, and I urge you to read on! - - From 7a46bd185aebb962e354f16b462b2c9461672038 Mon Sep 17 00:00:00 2001 From: Francisco Date: Sun, 25 Jan 2026 09:35:31 +0900 Subject: [PATCH 7/8] Added it to the native client as well --- packages/pg/lib/native/client.js | 2 +- .../pg/test/integration/client/promise-api-tests.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/pg/lib/native/client.js b/packages/pg/lib/native/client.js index f8c8ad9d4..de16693dd 100644 --- a/packages/pg/lib/native/client.js +++ b/packages/pg/lib/native/client.js @@ -135,7 +135,7 @@ Client.prototype.connect = function (callback) { if (error) { reject(error) } else { - resolve() + resolve(this) } }) }) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index bbe0a2e4e..9e2ffec0c 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -13,17 +13,17 @@ suite.test('valid connection completes promise', () => { }) }) -suite.test('valid connection returns the client in a promise', () => { +suite.test('valid connection completes promise', () => { const client = new pg.Client() - return client.connect().then((clientInside) => { - assert.equal(client, clientInside) + return client.connect().then(() => { return client.end().then(() => {}) }) }) -suite.test('valid connection completes promise', () => { +suite.test('valid connection returns the client in a promise', () => { const client = new pg.Client() - return client.connect().then(() => { + return client.connect().then((clientInside) => { + assert.equal(client, clientInside) return client.end().then(() => {}) }) }) From 58fc0c7b328dc690e57d7c012dfe8a38c1793654 Mon Sep 17 00:00:00 2001 From: Francisco Date: Mon, 26 Jan 2026 08:50:53 +0900 Subject: [PATCH 8/8] Added this to the callback --- packages/pg/lib/native/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pg/lib/native/client.js b/packages/pg/lib/native/client.js index de16693dd..4bee7ce3c 100644 --- a/packages/pg/lib/native/client.js +++ b/packages/pg/lib/native/client.js @@ -119,7 +119,7 @@ Client.prototype._connect = function (cb) { self.emit('connect') self._pulseQueryQueue(true) - cb() + cb(null, this) }) }) }