The error-handling in this repo grew pretty organically without us giving much thought to an over-arching strategy. The end result of that was a proliferation of different error types that weren't really adding much value. The API here is simple and the 4xx responses are really limited to bad requests and bounce/complaint limit violations. Everything else is an internal server error. As such, the `error` module could be simplified by employing a blanket `Internal` error type to cover the multitude of niche errors that should never occur during normal conditions. The detail for those errors is still available in the `message` property and Sentry will still log the backtrace of course. I also noticed that the Rocket catcher stuff wasn't really being used, so pulled that out too. We have a standard JSON error format like the rest of the FxA ecosystem, and we always want the response payload to be the serialisation of that structure. One side-effect of all these changes is that the errno value has changed in most cases. However, I took care to preserve the errno for the bounce and complaint violations, because it's hard-coded in the auth server. It wouldn't have been that onerous to open a PR for commensurate changes over there, but the number of errors left here worked out in such a way that made sense not to bother.