diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js
index af28546b30b769732c8aa1c43716afd4fb1bb1b2..1e2890e47eec6d5a7dec881370b4fa1be2330466 100644
--- a/lib/http-proxy/passes/web-incoming.js
+++ b/lib/http-proxy/passes/web-incoming.js
@@ -135,6 +135,11 @@ web_o = Object.keys(web_o).map(function(pass) {
     proxyReq.on('error', proxyError);
 
     function proxyError (err){
+      if (req.socket.destroyed && err.code === 'ECONNRESET') {
+        server.emit('econnreset', err, req, res, options.target);
+        return proxyReq.abort();
+      }
+
       if (clb) {
         clb(err, req, res, options.target);
       } else {
diff --git a/test/lib-http-proxy-passes-web-incoming-test.js b/test/lib-http-proxy-passes-web-incoming-test.js
index 6ca63d398d48dd8f52832c1c7ed3512c04752859..a89fc23545fe03c8468eeb6bf627816a34bc812b 100644
--- a/test/lib-http-proxy-passes-web-incoming-test.js
+++ b/test/lib-http-proxy-passes-web-incoming-test.js
@@ -229,7 +229,7 @@ describe('#createProxyServer.web() using own http server', function () {
 
     var started = new Date().getTime();
     function requestHandler(req, res) {
-      proxy.once('error', function (err, errReq, errRes) {
+      proxy.once('econnreset', function (err, errReq, errRes) {
         proxyServer.close();
         expect(err).to.be.an(Error);
         expect(errReq).to.be.equal(req);