I also noticed this pattern repeated all over.

Can we use the response status code and centralize the error handling in the `Response` class so we don't need to repeat this if check in many function bodies?

[Here](https://github.com/apache/libcloud/blob/trunk/libcloud/dns/drivers/zerigo.py#L66-L95) is an example of how we do that in the Zerigo driver.