feat: gracefully handle middleware exceptions #43
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR prevents HTTP servers from crashing when they use this middleware and an error is thrown in some MSW handler. Now, the error can be handled by the server's error middleware instead.
Background:
We have a test setup with MSW handlers that use
@mswjs/data
and query the DB with strict queries. Therefore, it may happen that a handler throws an error. Yesterday, we started to this package to reuse our handlers and DB setup for local development as well.We noticed that the whole server process crashes when
@mswjs/data
throws an error instead of handling it with the default error middleware built into Express. This happens because Express is not able to handle Promises, yet. Apparently, it is only able to catch errors in synchronous code automatically. Promise rejections have to be passed to thenext
argument explicitly. See: https://expressjs.com/en/guide/error-handling.html