HttpError handling
I have a situation where I need to discriminate between a `HttpError` raised by Koa (or any middleware) as opposed to any other type of error raised by the application - the latter should never occur if everything is correct, however the former is expected.

At the moment, I have a block of code like so:
```
import createError from "http-errors"
export async function errorHandler(ctx, next) {
  try {
    await next()
  } catch (err) {
    if (err instanceof createError.HttpError)
      // this type of error is expected, should produce minimal logging
    else
      // create an alert for this type of error, since it should never occur in normal operation
  }
}
```

This works, but I don't think it's ideal. The issue is that my project does not depend on the `http-errors` library directly; only in so far as these errors are raised by Koa when I call the `throw` or `assert` functions in a handler. I would prefer if I could handle this case by interacting with some aspect of Koa - if Koa delegates that to `http-errors` or some other library, I think that should be an implementation detail for Koa rather than meaning I need to introduce a library for this into my code.

So, this leaves me with two questions:
1. Is this the appropriate way to handle this situation, or is there some other mechanism I should be using?
2. If this is the correct way to handle this case, can Koa export the errors in use from other libraries?