diff --git a/lib/connection.js b/lib/connection.js
index 48d65d25f..489a5afd9 100644
--- a/lib/connection.js
+++ b/lib/connection.js
@@ -64,9 +64,8 @@ Connection.prototype.connect = function (port, host) {
   })
 
   const reportStreamError = function (error) {
-    // don't raise ECONNRESET errors - they can & should be ignored
-    // during disconnect
-    if (self._ending && error.code === 'ECONNRESET') {
+    // errors about disconnections should be ignored during disconnect
+    if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) {
       return
     }
     self.emit('error', error)
diff --git a/package.json b/package.json
index 9eaf4c256..66e399bc1 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
     "buffer-writer": "2.0.0",
     "packet-reader": "1.0.0",
     "pg-connection-string": "0.1.3",
-    "pg-pool": "^2.0.4",
+    "pg-pool": "^2.0.7",
     "pg-types": "^2.1.0",
     "pgpass": "1.x",
     "semver": "4.3.2"
diff --git a/test/integration/connection-pool/error-tests.js b/test/integration/connection-pool/error-tests.js
index cadffe3db..597c29b38 100644
--- a/test/integration/connection-pool/error-tests.js
+++ b/test/integration/connection-pool/error-tests.js
@@ -8,15 +8,13 @@ suite.test('connecting to invalid port', (cb) => {
   pool.connect().catch(e => cb())
 })
 
-suite.test('errors emitted on pool', (cb) => {
+suite.test('errors emitted on checked-out clients', (cb) => {
   // make pool hold 2 clients
   const pool = new pg.Pool({ max: 2 })
   // get first client
   pool.connect(assert.success(function (client, done) {
-    client.id = 1
     client.query('SELECT NOW()', function () {
       pool.connect(assert.success(function (client2, done2) {
-        client2.id = 2
         var pidColName = 'procpid'
         helper.versionGTE(client2, 90200, assert.success(function (isGreater) {
           var killIdleQuery = 'SELECT pid, (SELECT pg_terminate_backend(pid)) AS killed FROM pg_stat_activity WHERE state = $1'
@@ -26,10 +24,9 @@ suite.test('errors emitted on pool', (cb) => {
             params = ['%IDLE%']
           }
 
-          pool.once('error', (err, brokenClient) => {
-            assert.ok(err)
-            assert.ok(brokenClient)
-            assert.equal(client.id, brokenClient.id)
+          client.once('error', (err) => {
+            client.on('error', (err) => {})
+            done(err)
             cb()
           })
 
@@ -57,18 +54,18 @@ suite.test('connection-level errors cause queued queries to fail', (cb) => {
       }
     }))
 
-    pool.once('error', assert.calls((err, brokenClient) => {
-      assert.equal(client, brokenClient)
+    client.once('error', assert.calls((err) => {
+      client.on('error', (err) => {})
     }))
 
     client.query('SELECT 1', assert.calls((err) => {
       if (helper.args.native) {
-        assert.ok(err)
+        assert.equal(err.message, 'terminating connection due to administrator command')
       } else {
         assert.equal(err.message, 'Connection terminated unexpectedly')
       }
 
-      done()
+      done(err)
       pool.end()
       cb()
     }))
@@ -86,13 +83,16 @@ suite.test('connection-level errors cause future queries to fail', (cb) => {
       }
     }))
 
-    pool.once('error', assert.calls((err, brokenClient) => {
-      assert.equal(client, brokenClient)
-
+    client.once('error', assert.calls((err) => {
+      client.on('error', (err) => {})
       client.query('SELECT 1', assert.calls((err) => {
-        assert.equal(err.message, 'Client has encountered a connection error and is not queryable')
+        if (helper.args.native) {
+          assert.equal(err.message, 'terminating connection due to administrator command')
+        } else {
+          assert.equal(err.message, 'Client has encountered a connection error and is not queryable')
+        }
 
-        done()
+        done(err)
         pool.end()
         cb()
       }))
diff --git a/test/integration/gh-issues/130-tests.js b/test/integration/gh-issues/130-tests.js
index b3e2a2252..db3aeacd5 100644
--- a/test/integration/gh-issues/130-tests.js
+++ b/test/integration/gh-issues/130-tests.js
@@ -5,19 +5,21 @@ var exec = require('child_process').exec
 helper.pg.defaults.poolIdleTimeout = 1000
 
 const pool = new helper.pg.Pool()
-pool.connect(function (err, client) {
+pool.connect(function (err, client, done) {
+  assert.ifError(err)
+  client.once('error', function (err) {
+    client.on('error', (err) => {})
+    done(err)
+  })
   client.query('SELECT pg_backend_pid()', function (err, result) {
+    assert.ifError(err)
     var pid = result.rows[0].pg_backend_pid
     var psql = 'psql'
     if (helper.args.host) psql = psql + ' -h ' + helper.args.host
     if (helper.args.port) psql = psql + ' -p ' + helper.args.port
     if (helper.args.user) psql = psql + ' -U ' + helper.args.user
     exec(psql + ' -c "select pg_terminate_backend(' + pid + ')" template1', assert.calls(function (error, stdout, stderr) {
-      assert.isNull(error)
+      assert.ifError(error)
     }))
   })
 })
-
-pool.on('error', function (err, client) {
-  // swallow errors
-})