Inconsistent behavior with proxyError depending on createServer invocation #185

n1mmy opened this Issue Feb 1, 2012 · 3 comments


None yet

3 participants

n1mmy commented Feb 1, 2012

How the proxy behaves when a proxyError occurs seems to depend in odd ways on how the server was invoked.

When created like this (first example in README):

var httpProxy = require('http-proxy');
var server = httpProxy.createServer(24, 'localhost');

The proxy returns 500 with a message that the connection was refused.

However, if you start the proxy like this (second example in the README):

var httpProxy = require('http-proxy');
var server = httpProxy.createServer(function (req, res, proxy) {
  proxy.proxyRequest(req, res, {
    host: '', port: 24

The proxied connections simply hang forever (until client timeout).

Adding custom error handling code works in both cases:

server.proxy.on('proxyError', function (err, req, res) {
  res.writeHead(500, {
    'Content-Type': 'text/plain'
  res.end('Something went wrong. And we are reporting a custom error message.');  
  console.log("XXX", err);

This is especially confusing since the README does not mention proxyError at all.


This is probably because a RoutingProxy is being created in one case, and an HttpProxy in the other. I bet this is just a matter of copying the error handler from HttpProxy to RoutingProxy!


Guess it's not that simple! It never is.

RoutingProxy should re-emit errors from HttpProxy. There shouldn't be any differences. But RoutingProxy has been hanging when there's errors for me as well.


Fixed by #216

@indexzero indexzero closed this Mar 9, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment