diff --git a/google/auth/_default.py b/google/auth/_default.py
index 7dac642..06f52bb 100644
--- a/google/auth/_default.py
+++ b/google/auth/_default.py
@@ -22,6 +22,8 @@
 import logging
 import os
 
+import six
+
 from google.auth import environment_vars
 from google.auth import exceptions
 import google.auth.transport._http_client
@@ -67,9 +69,10 @@
     with io.open(filename, 'r') as file_obj:
         try:
             info = json.load(file_obj)
-        except ValueError as exc:
-            raise exceptions.DefaultCredentialsError(
-                'File {} is not a valid json file.'.format(filename), exc)
+        except ValueError as caught_exc:
+            new_exc = exceptions.DefaultCredentialsError(
+                'File {} is not a valid json file.'.format(filename))
+            six.raise_from(new_exc, caught_exc)
 
     # The type key should indicate that the file is either a service account
     # credentials file or an authorized user credentials file.
@@ -80,10 +83,11 @@
 
         try:
             credentials = _cloud_sdk.load_authorized_user_credentials(info)
-        except ValueError as exc:
-            raise exceptions.DefaultCredentialsError(
+        except ValueError as caught_exc:
+            new_exc = exceptions.DefaultCredentialsError(
                 'Failed to load authorized user credentials from {}'.format(
-                    filename), exc)
+                    filename))
+            six.raise_from(new_exc, caught_exc)
         # Authorized user credentials do not contain the project ID.
         return credentials, None
 
@@ -93,10 +97,11 @@
         try:
             credentials = (
                 service_account.Credentials.from_service_account_info(info))
-        except ValueError as exc:
-            raise exceptions.DefaultCredentialsError(
+        except ValueError as caught_exc:
+            new_exc = exceptions.DefaultCredentialsError(
                 'Failed to load service account credentials from {}'.format(
-                    filename), exc)
+                    filename))
+            six.raise_from(new_exc, caught_exc)
         return credentials, info.get('project_id')
 
     else:
diff --git a/google/auth/_oauth2client.py b/google/auth/_oauth2client.py
index 312326e..e298fb1 100644
--- a/google/auth/_oauth2client.py
+++ b/google/auth/_oauth2client.py
@@ -26,12 +26,14 @@
 import google.oauth2.credentials
 import google.oauth2.service_account
 
+import six
 try:
     import oauth2client.client
     import oauth2client.contrib.gce
     import oauth2client.service_account
-except ImportError:
-    raise ImportError('oauth2client is not installed.')
+except ImportError as caught_exc:
+    new_exc = ImportError('oauth2client is not installed.')
+    six.raise_from(new_exc, caught_exc)
 
 try:
     import oauth2client.contrib.appengine
@@ -162,5 +164,6 @@
 
     try:
         return _CLASS_CONVERSION_MAP[credentials_class](credentials)
-    except KeyError:
-        raise ValueError(_CONVERT_ERROR_TMPL.format(credentials_class))
+    except KeyError as caught_exc:
+        new_exc = ValueError(_CONVERT_ERROR_TMPL.format(credentials_class))
+        six.raise_from(new_exc, caught_exc)
diff --git a/google/auth/compute_engine/_metadata.py b/google/auth/compute_engine/_metadata.py
index 9a22d7a..c47be3f 100644
--- a/google/auth/compute_engine/_metadata.py
+++ b/google/auth/compute_engine/_metadata.py
@@ -22,6 +22,7 @@
 import logging
 import os
 
+import six
 from six.moves import http_client
 from six.moves.urllib import parse as urlparse
 
@@ -118,10 +119,11 @@
         if response.headers['content-type'] == 'application/json':
             try:
                 return json.loads(content)
-            except ValueError:
-                raise exceptions.TransportError(
+            except ValueError as caught_exc:
+                new_exc = exceptions.TransportError(
                     'Received invalid JSON from the Google Compute Engine'
                     'metadata service: {:.20}'.format(content))
+                six.raise_from(new_exc, caught_exc)
         else:
             return content
     else:
diff --git a/google/auth/compute_engine/credentials.py b/google/auth/compute_engine/credentials.py
index b8fe6f5..cbc7cf4 100644
--- a/google/auth/compute_engine/credentials.py
+++ b/google/auth/compute_engine/credentials.py
@@ -19,6 +19,8 @@
 
 """
 
+import six
+
 from google.auth import credentials
 from google.auth import exceptions
 from google.auth.compute_engine import _metadata
@@ -89,8 +91,9 @@
             self.token, self.expiry = _metadata.get_service_account_token(
                 request,
                 service_account=self._service_account_email)
-        except exceptions.TransportError as exc:
-            raise exceptions.RefreshError(exc)
+        except exceptions.TransportError as caught_exc:
+            new_exc = exceptions.RefreshError()
+            six.raise_from(new_exc, caught_exc)
 
     @property
     def service_account_email(self):
diff --git a/google/auth/jwt.py b/google/auth/jwt.py
index b1eb5fb..0253376 100644
--- a/google/auth/jwt.py
+++ b/google/auth/jwt.py
@@ -47,6 +47,7 @@
 import json
 
 import cachetools
+import six
 from six.moves import urllib
 
 from google.auth import _helpers
@@ -101,8 +102,9 @@
     section_bytes = _helpers.padded_urlsafe_b64decode(encoded_section)
     try:
         return json.loads(section_bytes.decode('utf-8'))
-    except ValueError:
-        raise ValueError('Can\'t parse segment: {0}'.format(section_bytes))
+    except ValueError as caught_exc:
+        new_exc = ValueError('Can\'t parse segment: {0}'.format(section_bytes))
+        six.raise_from(new_exc, caught_exc)
 
 
 def _unverified_decode(token):
diff --git a/google/auth/transport/_http_client.py b/google/auth/transport/_http_client.py
index 4a10096..35b1005 100644
--- a/google/auth/transport/_http_client.py
+++ b/google/auth/transport/_http_client.py
@@ -17,6 +17,7 @@
 import logging
 import socket
 
+import six
 from six.moves import http_client
 from six.moves import urllib
 
@@ -104,8 +105,9 @@
             response = connection.getresponse()
             return Response(response)
 
-        except (http_client.HTTPException, socket.error) as exc:
-            raise exceptions.TransportError(exc)
+        except (http_client.HTTPException, socket.error) as caught_exc:
+            new_exc = exceptions.TransportError()
+            six.raise_from(new_exc, caught_exc)
 
         finally:
             connection.close()
diff --git a/google/auth/transport/grpc.py b/google/auth/transport/grpc.py
index 8554ffa..08b2f57 100644
--- a/google/auth/transport/grpc.py
+++ b/google/auth/transport/grpc.py
@@ -16,13 +16,14 @@
 
 from __future__ import absolute_import
 
+import six
 try:
     import grpc
-except ImportError:  # pragma: NO COVER
-    raise ImportError(
+except ImportError as caught_exc:  # pragma: NO COVER
+    new_exc = ImportError(
         'gRPC is not installed, please install the grpcio package to use the '
         'gRPC transport.')
-import six
+    six.raise_from(new_exc, caught_exc)
 
 
 class AuthMetadataPlugin(grpc.AuthMetadataPlugin):
diff --git a/google/auth/transport/requests.py b/google/auth/transport/requests.py
index 6fc395e..31ce22d 100644
--- a/google/auth/transport/requests.py
+++ b/google/auth/transport/requests.py
@@ -18,12 +18,14 @@
 
 import logging
 
+import six
 try:
     import requests
-except ImportError:  # pragma: NO COVER
-    raise ImportError(
+except ImportError as caught_exc:  # pragma: NO COVER
+    new_exc = ImportError(
         'The requests library is not installed, please install the requests '
         'package to use the requests transport.')
+    six.raise_from(new_exc, caught_exc)
 import requests.exceptions
 
 from google.auth import exceptions
@@ -111,8 +113,9 @@
                 method, url, data=body, headers=headers, timeout=timeout,
                 **kwargs)
             return _Response(response)
-        except requests.exceptions.RequestException as exc:
-            raise exceptions.TransportError(exc)
+        except requests.exceptions.RequestException as caught_exc:
+            new_exc = exceptions.TransportError()
+            six.raise_from(new_exc, caught_exc)
 
 
 class AuthorizedSession(requests.Session):
diff --git a/google/auth/transport/urllib3.py b/google/auth/transport/urllib3.py
index 0dfe913..872bf9f 100644
--- a/google/auth/transport/urllib3.py
+++ b/google/auth/transport/urllib3.py
@@ -30,12 +30,14 @@
 except ImportError:  # pragma: NO COVER
     certifi = None
 
+import six
 try:
     import urllib3
-except ImportError:  # pragma: NO COVER
-    raise ImportError(
+except ImportError as caught_exc:  # pragma: NO COVER
+    new_exc = ImportError(
         'The urllib3 library is not installed, please install the urllib3 '
         'package to use the urllib3 transport.')
+    six.raise_from(new_exc, caught_exc)
 import urllib3.exceptions
 
 from google.auth import exceptions
@@ -126,8 +128,9 @@
             response = self.http.request(
                 method, url, body=body, headers=headers, **kwargs)
             return _Response(response)
-        except urllib3.exceptions.HTTPError as exc:
-            raise exceptions.TransportError(exc)
+        except urllib3.exceptions.HTTPError as caught_exc:
+            new_exc = exceptions.TransportError()
+            six.raise_from(new_exc, caught_exc)
 
 
 def _make_default_http():
diff --git a/google/oauth2/_client.py b/google/oauth2/_client.py
index 468cb7e..66251df 100644
--- a/google/oauth2/_client.py
+++ b/google/oauth2/_client.py
@@ -26,6 +26,7 @@
 import datetime
 import json
 
+import six
 from six.moves import http_client
 from six.moves import urllib
 
@@ -144,9 +145,10 @@
 
     try:
         access_token = response_data['access_token']
-    except KeyError:
-        raise exceptions.RefreshError(
+    except KeyError as caught_exc:
+        new_exc = exceptions.RefreshError(
             'No access token in response.', response_data)
+        six.raise_from(new_exc, caught_exc)
 
     expiry = _parse_expiry(response_data)
 
@@ -190,9 +192,10 @@
 
     try:
         access_token = response_data['access_token']
-    except KeyError:
-        raise exceptions.RefreshError(
+    except KeyError as caught_exc:
+        new_exc = exceptions.RefreshError(
             'No access token in response.', response_data)
+        six.raise_from(new_exc, caught_exc)
 
     refresh_token = response_data.get('refresh_token', refresh_token)
     expiry = _parse_expiry(response_data)
diff --git a/tests/compute_engine/test_credentials.py b/tests/compute_engine/test_credentials.py
index ae2597d..ee343fe 100644
--- a/tests/compute_engine/test_credentials.py
+++ b/tests/compute_engine/test_credentials.py
@@ -78,8 +78,6 @@
         with pytest.raises(exceptions.RefreshError) as excinfo:
             self.credentials.refresh(None)
 
-        assert excinfo.match(r'http error')
-
     @mock.patch('google.auth.compute_engine._metadata.get', autospec=True)
     def test_before_request_refreshes(self, get):
         get.side_effect = [{
diff --git a/tests/test__default.py b/tests/test__default.py
index 2df8a44..090cea6 100644
--- a/tests/test__default.py
+++ b/tests/test__default.py
@@ -85,7 +85,6 @@
         _default._load_credentials_from_file(str(filename))
 
     assert excinfo.match(r'Failed to load authorized user')
-    assert excinfo.match(r'missing fields')
 
 
 def test__load_credentials_from_file_service_account():
@@ -103,7 +102,6 @@
         _default._load_credentials_from_file(str(filename))
 
     assert excinfo.match(r'Failed to load service account')
-    assert excinfo.match(r'missing fields')
 
 
 @mock.patch.dict(os.environ, {}, clear=True)
