Just a note: this will break when #329 is merged.  Errors will return HTTP error status codes.  Comments on that design decision welcome on that pull request!