Simplify response handling

Instead of throwing json decoding errors when getting responses with
error codes and text, we let the call method raise appropriate errors
before trying to do the json decoding. Results in less code and easier
error handling.
8 jobs for token-removal in 2 minutes and 20 seconds (queued for 4 seconds)