diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py
index 6851cd2..73425d9 100644
--- a/Lib/asyncio/base_subprocess.py
+++ b/Lib/asyncio/base_subprocess.py
@@ -87,6 +87,9 @@
     def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):
         raise NotImplementedError
 
+    def is_closing(self):
+        return self._closed
+
     def close(self):
         if self._closed:
             return
diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py
index abe4c12..9c514c8 100644
--- a/Lib/asyncio/proactor_events.py
+++ b/Lib/asyncio/proactor_events.py
@@ -65,6 +65,9 @@
     def _set_extra(self, sock):
         self._extra['pipe'] = sock
 
+    def is_closing(self):
+        return self._closing
+
     def close(self):
         if self._closing:
             return
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index 0060912..236f7b3 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -556,6 +556,9 @@
     def abort(self):
         self._force_close(None)
 
+    def is_closing(self):
+        return self._closing
+
     def close(self):
         if self._closing:
             return
diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py
index 9e08b6f..dde980b 100644
--- a/Lib/asyncio/sslproto.py
+++ b/Lib/asyncio/sslproto.py
@@ -304,6 +304,9 @@
         """Get optional transport information."""
         return self._ssl_protocol._get_extra_info(name, default)
 
+    def is_closing(self):
+        return self._closed
+
     def close(self):
         """Close the transport.
 
diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py
index 64d1020..6b5e96a 100644
--- a/Lib/asyncio/streams.py
+++ b/Lib/asyncio/streams.py
@@ -302,7 +302,7 @@
             if exc is not None:
                 raise exc
         if self._transport is not None:
-            if self._transport._closing:
+            if self._transport.is_closing():
                 # Yield to the event loop so connection_lost() may be
                 # called.  Without this, _drain_helper() would return
                 # immediately, and code that calls
diff --git a/Lib/asyncio/transports.py b/Lib/asyncio/transports.py
index 03099e3..9a6d919 100644
--- a/Lib/asyncio/transports.py
+++ b/Lib/asyncio/transports.py
@@ -19,6 +19,10 @@
         """Get optional transport information."""
         return self._extra.get(name, default)
 
+    def is_closing(self):
+        """Return True if the transport is closing or closed."""
+        raise NotImplementedError
+
     def close(self):
         """Close the transport.
 
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index bf3b084..f75e89f 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -364,6 +364,9 @@
     def resume_reading(self):
         self._loop.add_reader(self._fileno, self._read_ready)
 
+    def is_closing(self):
+        return self._closing
+
     def close(self):
         if not self._closing:
             self._close(None)
@@ -548,6 +551,9 @@
             self._loop.remove_reader(self._fileno)
             self._loop.call_soon(self._call_connection_lost, None)
 
+    def is_closing(self):
+        return self._closing
+
     def close(self):
         if self._pipe is not None and not self._closing:
             # write_eof is all what we needed to close the write pipe
diff --git a/Lib/test/test_asyncio/test_proactor_events.py b/Lib/test/test_asyncio/test_proactor_events.py
index fcd9ab1..5a0f088 100644
--- a/Lib/test/test_asyncio/test_proactor_events.py
+++ b/Lib/test/test_asyncio/test_proactor_events.py
@@ -204,7 +204,7 @@
         tr.close()
         test_utils.run_briefly(self.loop)
         self.protocol.connection_lost.assert_called_with(None)
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertEqual(tr._conn_lost, 1)
 
         self.protocol.connection_lost.reset_mock()
@@ -298,7 +298,7 @@
             self.loop, self.sock, self.protocol)
         self.assertTrue(tr.can_write_eof())
         tr.write_eof()
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.loop._run_once()
         self.assertTrue(self.sock.close.called)
         tr.close()
@@ -309,7 +309,7 @@
         tr._loop._proactor.send.return_value = f
         tr.write(b'data')
         tr.write_eof()
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertFalse(self.sock.shutdown.called)
         tr._loop._proactor.send.assert_called_with(self.sock, b'data')
         f.set_result(4)
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py
index f0fcdd2..135b5ab 100644
--- a/Lib/test/test_asyncio/test_selector_events.py
+++ b/Lib/test/test_asyncio/test_selector_events.py
@@ -698,7 +698,7 @@
         tr = self.create_transport()
         tr.close()
 
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertEqual(1, self.loop.remove_reader_count[7])
         self.protocol.connection_lost(None)
         self.assertEqual(tr._conn_lost, 1)
@@ -723,7 +723,7 @@
         self.loop.add_writer(7, mock.sentinel)
         tr._force_close(None)
 
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertEqual(tr._buffer, list_to_buffer())
         self.assertFalse(self.loop.readers)
         self.assertFalse(self.loop.writers)
@@ -1436,7 +1436,7 @@
         tr = self._make_one()
         tr.close()
 
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertEqual(1, self.loop.remove_reader_count[1])
         self.assertEqual(tr._conn_lost, 1)
 
diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py
index 38f0cee..e90f17d 100644
--- a/Lib/test/test_asyncio/test_subprocess.py
+++ b/Lib/test/test_asyncio/test_subprocess.py
@@ -61,7 +61,7 @@
         self.assertTrue(protocol.connection_lost.called)
         self.assertEqual(protocol.connection_lost.call_args[0], (None,))
 
-        self.assertFalse(transport._closed)
+        self.assertFalse(transport.is_closing())
         self.assertIsNone(transport._loop)
         self.assertIsNone(transport._proc)
         self.assertIsNone(transport._protocol)
diff --git a/Lib/test/test_asyncio/test_unix_events.py b/Lib/test/test_asyncio/test_unix_events.py
index dc0835c..22dc688 100644
--- a/Lib/test/test_asyncio/test_unix_events.py
+++ b/Lib/test/test_asyncio/test_unix_events.py
@@ -440,7 +440,7 @@
         tr = self.read_pipe_transport()
         err = object()
         tr._close(err)
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertFalse(self.loop.readers)
         test_utils.run_briefly(self.loop)
         self.protocol.connection_lost.assert_called_with(err)
@@ -598,7 +598,7 @@
         tr._read_ready()
         self.assertFalse(self.loop.readers)
         self.assertFalse(self.loop.writers)
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         test_utils.run_briefly(self.loop)
         self.protocol.connection_lost.assert_called_with(None)
 
@@ -658,7 +658,7 @@
         self.assertFalse(self.loop.writers)
         self.assertFalse(self.loop.readers)
         self.assertEqual([], tr._buffer)
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         m_logexc.assert_called_with(
             test_utils.MockPattern(
                 'Fatal write error on pipe transport'
@@ -694,7 +694,7 @@
         self.assertFalse(self.loop.readers)
         self.assertFalse(self.loop.writers)
         self.assertEqual([], tr._buffer)
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         test_utils.run_briefly(self.loop)
         self.protocol.connection_lost.assert_called_with(None)
 
@@ -743,7 +743,7 @@
     def test_write_eof(self):
         tr = self.write_pipe_transport()
         tr.write_eof()
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertFalse(self.loop.readers)
         test_utils.run_briefly(self.loop)
         self.protocol.connection_lost.assert_called_with(None)
@@ -752,7 +752,7 @@
         tr = self.write_pipe_transport()
         tr._buffer = [b'data']
         tr.write_eof()
-        self.assertTrue(tr._closing)
+        self.assertTrue(tr.is_closing())
         self.assertFalse(self.protocol.connection_lost.called)
 
 
