fix: change 'internal_failure' condition to also use `error' field (#387)

* fix: change `internal_failure` condition to also use `error' field

In some cases response doesn't contain `error_description` field. So the retry won't work. The solution is to look at both `error` and `error_description` fields.
diff --git a/google/oauth2/_client.py b/google/oauth2/_client.py
index 996f9b7..f92b097 100644
--- a/google/oauth2/_client.py
+++ b/google/oauth2/_client.py
@@ -104,18 +104,21 @@
     while True:
         response = request(method="POST", url=token_uri, headers=headers, body=body)
         response_body = response.data.decode("utf-8")
+        response_data = json.loads(response_body)
 
         if response.status == http_client.OK:
             break
         else:
-            error_desc = json.loads(response_body).get("error_description") or ""
-            if error_desc == "internal_failure" and retry < 1:
+            error_desc = response_data.get("error_description") or ""
+            error_code = response_data.get("error") or ""
+            if (
+                any(e == "internal_failure" for e in (error_code, error_desc))
+                and retry < 1
+            ):
                 retry += 1
                 continue
             _handle_error_response(response_body)
 
-    response_data = json.loads(response_body)
-
     return response_data
 
 
diff --git a/tests/oauth2/test__client.py b/tests/oauth2/test__client.py
index c415a1f..9cf59eb 100644
--- a/tests/oauth2/test__client.py
+++ b/tests/oauth2/test__client.py
@@ -112,15 +112,21 @@
 
 def test__token_endpoint_request_internal_failure_error():
     request = make_request(
-        {"error": "internal_failure", "error_description": "internal_failure"},
-        status=http_client.BAD_REQUEST,
+        {"error_description": "internal_failure"}, status=http_client.BAD_REQUEST
     )
 
     with pytest.raises(exceptions.RefreshError):
         _client._token_endpoint_request(
-            request,
-            "http://example.com",
-            {"error": "internal_failure", "error_description": "internal_failure"},
+            request, "http://example.com", {"error_description": "internal_failure"}
+        )
+
+    request = make_request(
+        {"error": "internal_failure"}, status=http_client.BAD_REQUEST
+    )
+
+    with pytest.raises(exceptions.RefreshError):
+        _client._token_endpoint_request(
+            request, "http://example.com", {"error": "internal_failure"}
         )