diff --git a/examples/balancer/simple-balancer.js b/examples/balancer/simple-balancer.js
index 3f53cc63d..16612b1b1 100644
--- a/examples/balancer/simple-balancer.js
+++ b/examples/balancer/simple-balancer.js
@@ -58,7 +58,7 @@ http.createServer(function (req, res) {
   //
   // ...and then the server you just used becomes the last item in the list.
   //
-  addresses.push(target);
+  addresses.push(target.target);
 }).listen(8021);
 
 // Rinse; repeat; enjoy.
\ No newline at end of file
diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js
index b127bc709..4f4c72c56 100644
--- a/lib/http-proxy/passes/web-incoming.js
+++ b/lib/http-proxy/passes/web-incoming.js
@@ -109,6 +109,14 @@ web_o = Object.keys(web_o).map(function(pass) {
       common.setupOutgoing(options.ssl || {}, options, req)
     );
 
+    // allow outgoing socket to timeout so that we could
+    // show an error page at the initial request
+    if(options.proxyTimeout) {
+      proxyReq.setTimeout(options.proxyTimeout, function() {
+         proxyReq.abort();
+      });
+    }
+
     // Ensure we abort proxy if request is aborted
     req.on('aborted', function () {
       proxyReq.abort();
@@ -122,9 +130,9 @@ web_o = Object.keys(web_o).map(function(pass) {
 
     function proxyError (err){
       if (clb) {
-        clb(err, req, res);
+        clb(err, req, res, options.target);
       } else {
-        server.emit('error', err, req, res);
+        server.emit('error', err, req, res, options.target);
       }
     }
 
diff --git a/package.json b/package.json
index 3b4cd363a..74210a2aa 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name"           : "http-proxy",
-  "version"        : "1.1.4",
+  "version"        : "1.1.5",
 
   "repository"     : {
     "type"              : "git",
diff --git a/test/lib-http-proxy-passes-web-incoming-test.js b/test/lib-http-proxy-passes-web-incoming-test.js
index 49ffa9ef4..93c76ca7a 100644
--- a/test/lib-http-proxy-passes-web-incoming-test.js
+++ b/test/lib-http-proxy-passes-web-incoming-test.js
@@ -128,6 +128,87 @@ describe('#createProxyServer.web() using own http server', function () {
     }, function() {}).end();
   });
 
+  it('should proxy the request and handle timeout error (proxyTimeout)', function(done) {
+    var proxy = httpProxy.createProxyServer({
+      target: 'http://127.0.0.1:45000',
+      proxyTimeout: 100
+    });
+
+    require('net').createServer().listen(45000);
+
+    var proxyServer = http.createServer(requestHandler);
+
+    var started = new Date().getTime();
+    function requestHandler(req, res) {
+      proxy.once('error', function (err, errReq, errRes) {
+        proxyServer.close();
+        expect(err).to.be.an(Error);
+        expect(errReq).to.be.equal(req);
+        expect(errRes).to.be.equal(res);
+        expect(new Date().getTime() - started).to.be.greaterThan(99);
+        expect(err.code).to.be('ECONNRESET');
+        done();
+      });
+
+      proxy.web(req, res);
+    }
+
+    proxyServer.listen('8084');
+
+    http.request({
+      hostname: '127.0.0.1',
+      port: '8084',
+      method: 'GET',
+    }, function() {}).end();
+  });
+
+  it('should proxy the request and handle timeout error', function(done) {
+    var proxy = httpProxy.createProxyServer({
+      target: 'http://127.0.0.1:45001',
+      timeout: 100
+    });
+
+    require('net').createServer().listen(45001);
+
+    var proxyServer = http.createServer(requestHandler);
+
+    var cnt = 0;
+    var doneOne = function() {
+      cnt += 1;
+      if(cnt === 2) done();
+    }
+
+    var started = new Date().getTime();
+    function requestHandler(req, res) {
+      proxy.once('error', function (err, errReq, errRes) {
+        proxyServer.close();
+        expect(err).to.be.an(Error);
+        expect(errReq).to.be.equal(req);
+        expect(errRes).to.be.equal(res);
+        expect(err.code).to.be('ECONNRESET');
+        doneOne();
+      });
+
+      proxy.web(req, res);
+    }
+
+    proxyServer.listen('8085');
+
+    var req = http.request({
+      hostname: '127.0.0.1',
+      port: '8085',
+      method: 'GET',
+    }, function() {});
+
+    req.on('error', function(err) {
+      expect(err).to.be.an(Error);
+      expect(err.code).to.be('ECONNRESET');
+      expect(new Date().getTime() - started).to.be.greaterThan(99);
+      doneOne();
+    });
+    req.end();
+  });
+
   it('should proxy the request and provide a proxyRes event with the request and response parameters', function(done) {
     var proxy = httpProxy.createProxyServer({
       target: 'http://127.0.0.1:8080'
@@ -151,8 +232,8 @@ describe('#createProxyServer.web() using own http server', function () {
       res.end('Response');
     });
 
-    proxyServer.listen('8084');
+    proxyServer.listen('8086');
     source.listen('8080');
-    http.request('http://127.0.0.1:8084', function() {}).end();
+    http.request('http://127.0.0.1:8086', function() {}).end();
   });
 });
\ No newline at end of file
diff --git a/test/lib-http-proxy-test.js b/test/lib-http-proxy-test.js
index d6d5b31df..220d2f7e4 100644
--- a/test/lib-http-proxy-test.js
+++ b/test/lib-http-proxy-test.js
@@ -294,9 +294,11 @@ describe('lib/http-proxy.js', function() {
       var proxy = httpProxy.createProxyServer({
         target: 'ws://127.0.0.1:' + ports.source,
         ws: true
-      }),
-      proxyServer = proxy.listen(ports.proxy),
-      destiny = io.listen(ports.source, function () {
+      });
+      proxyServer = proxy.listen(ports.proxy);
+      var server = http.createServer();
+      destiny = io.listen(server);
+      function startSocketIo() {
         var client = ioClient.connect('ws://127.0.0.1:' + ports.proxy);
 
         client.on('connect', function () {
@@ -306,10 +308,12 @@ describe('lib/http-proxy.js', function() {
         client.on('outgoing', function (data) {
           expect(data).to.be('Hello over websockets');
           proxyServer._server.close();
-          destiny.server.close();
+          server.close();
           done();
         });
-      });
+      }
+      server.listen(ports.source);
+      server.on('listening', startSocketIo);
 
       destiny.sockets.on('connection', function (socket) {
         socket.on('incoming', function (msg) {