diff --git a/google/auth/_default.py b/google/auth/_default.py
index 06f52bb..5410a4c 100644
--- a/google/auth/_default.py
+++ b/google/auth/_default.py
@@ -71,7 +71,8 @@
             info = json.load(file_obj)
         except ValueError as caught_exc:
             new_exc = exceptions.DefaultCredentialsError(
-                'File {} is not a valid json file.'.format(filename))
+                'File {} is not a valid json file.'.format(filename),
+                caught_exc)
             six.raise_from(new_exc, caught_exc)
 
     # The type key should indicate that the file is either a service account
@@ -84,9 +85,9 @@
         try:
             credentials = _cloud_sdk.load_authorized_user_credentials(info)
         except ValueError as caught_exc:
-            new_exc = exceptions.DefaultCredentialsError(
-                'Failed to load authorized user credentials from {}'.format(
-                    filename))
+            msg = 'Failed to load authorized user credentials from {}'.format(
+                filename)
+            new_exc = exceptions.DefaultCredentialsError(msg, caught_exc)
             six.raise_from(new_exc, caught_exc)
         # Authorized user credentials do not contain the project ID.
         return credentials, None
@@ -98,9 +99,9 @@
             credentials = (
                 service_account.Credentials.from_service_account_info(info))
         except ValueError as caught_exc:
-            new_exc = exceptions.DefaultCredentialsError(
-                'Failed to load service account credentials from {}'.format(
-                    filename))
+            msg = 'Failed to load service account credentials from {}'.format(
+                filename)
+            new_exc = exceptions.DefaultCredentialsError(msg, caught_exc)
             six.raise_from(new_exc, caught_exc)
         return credentials, info.get('project_id')
 
diff --git a/google/auth/compute_engine/credentials.py b/google/auth/compute_engine/credentials.py
index cbc7cf4..3841df2 100644
--- a/google/auth/compute_engine/credentials.py
+++ b/google/auth/compute_engine/credentials.py
@@ -92,7 +92,7 @@
                 request,
                 service_account=self._service_account_email)
         except exceptions.TransportError as caught_exc:
-            new_exc = exceptions.RefreshError()
+            new_exc = exceptions.RefreshError(caught_exc)
             six.raise_from(new_exc, caught_exc)
 
     @property
diff --git a/google/auth/transport/_http_client.py b/google/auth/transport/_http_client.py
index 35b1005..08b1ab6 100644
--- a/google/auth/transport/_http_client.py
+++ b/google/auth/transport/_http_client.py
@@ -106,7 +106,7 @@
             return Response(response)
 
         except (http_client.HTTPException, socket.error) as caught_exc:
-            new_exc = exceptions.TransportError()
+            new_exc = exceptions.TransportError(caught_exc)
             six.raise_from(new_exc, caught_exc)
 
         finally:
diff --git a/google/auth/transport/requests.py b/google/auth/transport/requests.py
index 66ff0d3..a49d3de 100644
--- a/google/auth/transport/requests.py
+++ b/google/auth/transport/requests.py
@@ -118,7 +118,7 @@
                 **kwargs)
             return _Response(response)
         except requests.exceptions.RequestException as caught_exc:
-            new_exc = exceptions.TransportError()
+            new_exc = exceptions.TransportError(caught_exc)
             six.raise_from(new_exc, caught_exc)
 
 
diff --git a/google/auth/transport/urllib3.py b/google/auth/transport/urllib3.py
index ec20fb6..37eb317 100644
--- a/google/auth/transport/urllib3.py
+++ b/google/auth/transport/urllib3.py
@@ -133,7 +133,7 @@
                 method, url, body=body, headers=headers, **kwargs)
             return _Response(response)
         except urllib3.exceptions.HTTPError as caught_exc:
-            new_exc = exceptions.TransportError()
+            new_exc = exceptions.TransportError(caught_exc)
             six.raise_from(new_exc, caught_exc)
 
 
