From 3e76c310c69e3dd7d69d7b1bc4dc9cac4606e940 Mon Sep 17 00:00:00 2001
From: Adam Nielsen <adam.nielsen@uq.edu.au>
Date: Fri, 2 Sep 2022 18:45:03 +1000
Subject: [PATCH] Test case for #2642 - pg-cursor .close() never returns after
 connection lost

---
 packages/pg-cursor/test/error-handling.js | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/packages/pg-cursor/test/error-handling.js b/packages/pg-cursor/test/error-handling.js
index f6edef6d5..7c6a812d4 100644
--- a/packages/pg-cursor/test/error-handling.js
+++ b/packages/pg-cursor/test/error-handling.js
@@ -19,6 +19,24 @@ describe('error handling', function () {
       })
     })
   })
+
+  it('can continue after connection lost', function (done) {
+    const client = new pg.Client()
+    client.connect()
+    const cursor = client.query(new Cursor('SELECT NOW()'))
+    cursor.read(1, function (err) {
+      // Simulate a connection dropout by disconnecting.
+      client.end(function (err) {
+        assert.ifError(err)
+        // Try to close the cursor as if we didn't know the connection had
+        // dropped out.
+        cursor.close(function (err) {
+          assert.ifError(err)
+          done()
+        })
+      })
+    })
+  })
 })
 
 describe('read callback does not fire sync', () => {