-
Notifications
You must be signed in to change notification settings - Fork 873
Description
Checks
- I understand project setup issues should be asked on StackOverflow or in GitHub Discussions.
- I updated to latest
http-proxy-middleware
.
Describe the bug (be clear and concise)
The callsites of handleUpgrade
do not handle errors thrown from prepareProxyRequest
. For a user, this means that any error thrown in router
or pathRewrite
will result in an unhandledRejection
.
We can see that the two call sites for handleUpgrade
neither await
the returned promise, nor use .catch()
to handle errors:
this.handleUpgrade(req, socket, head); |
server.on('upgrade', this.handleUpgrade); |
Step-by-step reproduction instructions
Add a router
or pathRewrite
function that throws an error, then try to make a websocket request. Observe that the error is not handled. E.g., if you add an onError
handler to the proxy config, it is not called, and if you process.on('unhandledRejection', (e) => console.error(e))
, that error is logged.
Expected behavior (be clear and concise)
onError
should be invoked so that I can handle the error appropriately.
How is http-proxy-middleware used in your project?
It is installed as a direct dependency.
What http-proxy-middleware configuration are you using?
Here's a pared-down version:
const options = {
router: async () => {
throw new Error('testing');
},
onError: (err, req, res) => {
// Not called for websocket requests
res.status(500).send();
},
};
What OS/version and node/version are you seeing the problem?
macOS 12.5.1; Node v16.17.0