diff --git a/lib/Pool.js b/lib/Pool.js
index <HASH>..<HASH> 100644
--- a/lib/Pool.js
+++ b/lib/Pool.js
@@ -116,6 +116,7 @@ Pool.prototype._createConnection = function() {
   // the connection to end as well, thus we only need to watch for the end event
   // and we will be notified of disconnects.
   connection.on('end', this._handleConnectionEnd.bind(this, connection));
+  connection.on('error', this._handleConnectionError.bind(this, connection));
 
   return connection;
 };
@@ -127,6 +128,13 @@ Pool.prototype._handleConnectionEnd = function(connection) {
   this._removeConnection(connection);
 };
 
+Pool.prototype._handleConnectionError = function(connection) {
+  if (this._closed || connection._poolRemoved) {
+    return;
+  }
+  this._removeConnection(connection);
+};
+
 Pool.prototype._removeConnection = function(connection) {
   connection._poolRemoved = true;
   for (var i = 0; i < this._allConnections.length; ++i) {
Changes Pool to handle 'error' events and dispose connection