Throw custom exception and pass response object.
This enables clients to handle the error as they please.