Reject non-2xx responses from token endpoint
Change status check from >= 400 to outside 200-299 range. A 3xx
redirect from a misconfigured server would either leak client_secret
to the redirect target (if followed) or produce a confusing
Invalid_json error (if not followed). Now any non-2xx status is
rejected cleanly as Http_error.