401 status should be treated as an error.

Currently when 401 due to an expired token the response body is "expired token" - I believe that in this context 401s should be treated as an error.

This  change pushes the "expired token" message into the error as well as the body on a 401.

Note: I couldn't see any tests covering mapping responses from requests, I started trying to add a test or two for this but there are a few too many questions I'd have before adding the first tests.