Graffiticode Error Handling Best Practices

Having a shared library sounds like a good idea.

This may be implied in what you wrote, but we might want to have a complete set of base classes that map out the space of possible handler actions, either with an http response or logging.

E.g. all errors that cause a 400 to be sent would inherit the Http400Error (class InvalidArgumentError extends Http400Error). Then we could check for those more abstract classes when handling errors.

From a DX perspective, this reduces error handling to defining an error class and writing an assert(). This will go along way to encouraging the creation of more detailed and descriptive error reporting.