diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index dbe3bfa..2ef205e 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -91,6 +91,7 @@
 PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
 PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
 PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**);
+PyAPI_FUNC(void) _PyErr_ReplaceException(PyObject *, PyObject *, PyObject *);
 
 /* */
 
diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c
index 29db164..04c4445 100644
--- a/Modules/_io/_iomodule.c
+++ b/Modules/_io/_iomodule.c
@@ -529,14 +529,8 @@
         PyObject *exc, *val, *tb, *close_result;
         PyErr_Fetch(&exc, &val, &tb);
         close_result = PyObject_CallMethod(result, "close", NULL);
-        if (close_result != NULL) {
-            Py_DECREF(close_result);
-            PyErr_Restore(exc, val, tb);
-        } else {
-            Py_XDECREF(exc);
-            Py_XDECREF(val);
-            Py_XDECREF(tb);
-        }
+        _PyErr_ReplaceException(exc, val, tb);
+        Py_XDECREF(close_result);
         Py_DECREF(result);
     }
     Py_XDECREF(modeobj);
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index f146958..b4632ed 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -483,15 +483,8 @@
     res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_close, NULL);
 
     if (exc != NULL) {
-        if (res != NULL) {
-            Py_CLEAR(res);
-            PyErr_Restore(exc, val, tb);
-        }
-        else {
-            Py_DECREF(exc);
-            Py_XDECREF(val);
-            Py_XDECREF(tb);
-        }
+        _PyErr_ReplaceException(exc, val, tb);
+        Py_CLEAR(res);
     }
 
 end:
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index 48e0c66..65c8d8d 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -2480,15 +2480,8 @@
 
         res = PyObject_CallMethod(self->buffer, "close", NULL);
         if (exc != NULL) {
-            if (res != NULL) {
-                Py_CLEAR(res);
-                PyErr_Restore(exc, val, tb);
-            }
-            else {
-                Py_DECREF(exc);
-                Py_XDECREF(val);
-                Py_XDECREF(tb);
-            }
+            _PyErr_ReplaceException(exc, val, tb);
+            Py_CLEAR(res);
         }
         return res;
     }
diff --git a/Python/errors.c b/Python/errors.c
index 64ba05d..00dfd3e 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -263,6 +263,26 @@
     PyErr_Restore(NULL, NULL, NULL);
 }
 
+/* Restore previously fetched exception if an exception is not set,
+   otherwise drop previously fetched exception.
+   Like _PyErr_ChainExceptions() in Python 3, but doesn't set the context.
+ */
+void
+_PyErr_ReplaceException(PyObject *exc, PyObject *val, PyObject *tb)
+{
+    if (exc == NULL)
+        return;
+
+    if (PyErr_Occurred()) {
+        Py_DECREF(exc);
+        Py_XDECREF(val);
+        Py_XDECREF(tb);
+    }
+    else {
+        PyErr_Restore(exc, val, tb);
+    }
+}
+
 /* Convenience functions to set a type error exception and return 0 */
 
 int
