Handle 4xx as errors?

I was off the grid since Friday so could not join the discussion around #293 on #304 but here are my suggestions that might improve on that. Comments are very welcome!

- Also handle client (4xx) HTTP errors (just in case, you never know...)
- Return actual instance or `Error` when an HTTP error occurs

PS. Not sure if we should also have a test case for a successful HTTP response...?