You shouldn't use try..catch here. If the gateway returns a server error code for an expected error condition (e.g. invalid login credentials), then you should tell guzzle not to throw exceptions ([like this](https://github.com/adrianmacneil/omnipay/blob/master/src/Omnipay/Stripe/Message/AbstractRequest.php#L56)). Generally my preference is to pass the response straight through to the response class and let the response class figure out whether it was successful or not, rather than keeping this login in the request. See cardsave for an example of this.