How can I reliably handle this Node http-proxy error scenario?

I am relatively new to Node, so forgive me if this should be obvious… I am working on an Express app that sits in front of a network printer's Web interface (scanner-setup). Some of the HTML content that the app presents is scraped directly from the printer, and includes references to style sheets and scripts that I serve up using http-proxy with the following route:

var debug = require('debug')('scanner-setup');
var express = require('express');
var path = require('path');
⋮
var httpProxy = require('http-proxy');

var routes = require('./routes/index');
var profiles = require('./routes/profiles');
var proxy = httpProxy.createProxyServer();
⋮

app.get('/common/*', function(req, res) {
  proxy.on('error', function(err) {
    debug('Caught proxy error; impatient user?');
    if (res.headersSent) return;
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
  // TODO: Use baseurl from redis (and maybe cache resources)
  proxy.web(req, res, { target: 'http://brw342387ae07f5.local.' });
});

It's all good fun until somebody loses patience with the printer:

Wed, 17 Sep 2014 19:42:25 GMT scanner-setup Fetch profile response: 200
GET /profiles?id=0 200 1.294 ms - 4820
GET /common/css/ews.css - - ms - -
Wed, 17 Sep 2014 19:42:27 GMT scanner-setup Caught proxy error; impatient user?
GET /common/css/common.css 500 481.774 ms - 1313
Wed, 17 Sep 2014 19:42:27 GMT scanner-setup Caught proxy error; impatient user?
Wed, 17 Sep 2014 19:42:27 GMT scanner-setup Caught proxy error; impatient user?
GET /common/js/scan2ftpnet.js 500 535.090 ms - 1313
GET /profiles?id=1 200 0.919 ms - 4802
Wed, 17 Sep 2014 19:42:28 GMT scanner-setup Caught proxy error; impatient user?
Wed, 17 Sep 2014 19:42:28 GMT scanner-setup Caught proxy error; impatient user?
Wed, 17 Sep 2014 19:42:28 GMT scanner-setup Caught proxy error; impatient user?
Wed, 17 Sep 2014 19:42:28 GMT scanner-setup Caught proxy error; impatient user?
GET /common/css/ews.css - - ms - -
GET /common/css/common.css - - ms - -
GET /common/js/scan2ftpnet.js - - ms - -
GET /profiles?id=0 - - ms - -
GET /profiles?id=1 200 600.579 ms - 4802

http.js:689
    throw new Error('Can\'t set headers after they are sent.');
          ^
Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
    at /Users/kaelin/WebstormProjects/scanner-setup/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js:58:11
    at Array.forEach (native)
    at Array.writeHeaders [as 2] (/Users/kaelin/WebstormProjects/scanner-setup/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js:57:35)
    at ClientRequest.<anonymous> (/Users/kaelin/WebstormProjects/scanner-setup/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js:149:19)
    at ClientRequest.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1688:21)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
    at Socket.socketOnData [as ondata] (http.js:1583:20)
    at TCP.onread (net.js:527:27)

Process finished with exit code 8

Basically this is happening when the user clicks a link, then gets impatient while their browser is trying to GET the proxied resources and clicks a different link (thus closing their pending requests). As you can see above, my first stab at an error handler for this case isn't covering the bases… (It sends a 500 response, but then all hell breaks loose when the printer finally gets around to replying to http-proxy.)

Before I spend a lot of time thrashing around with this, is there a simple way to deal with this class of reverse-proxy errors?