improve specs, work on error handling

Gotta think about this stuff a bit... we should probably raise a custom exception. The custom exception could be given the $response and expose it with a function like getResponse(). That's the best idea I've come up with so far I think.