diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 2f7f197..42d8b0b 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -247,7 +247,11 @@
 
         This clears the queues and shuts down the executor,
         but does not wait for the executor to finish.
+
+        The event loop must not be running.
         """
+        if self._running:
+            raise RuntimeError("cannot close a running event loop")
         if self._closed:
             return
         self._closed = True
diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py
index 757a22e..b76f69e 100644
--- a/Lib/asyncio/proactor_events.py
+++ b/Lib/asyncio/proactor_events.py
@@ -355,12 +355,12 @@
     def close(self):
         if self.is_closed():
             return
+        super().close()
         self._stop_accept_futures()
         self._close_self_pipe()
         self._proactor.close()
         self._proactor = None
         self._selector = None
-        super().close()
 
     def sock_recv(self, sock, n):
         return self._proactor.recv(sock, n)
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index a62a8e5..df64aec 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -57,11 +57,11 @@
     def close(self):
         if self.is_closed():
             return
+        super().close()
         self._close_self_pipe()
         if self._selector is not None:
             self._selector.close()
             self._selector = None
-        super().close()
 
     def _socketpair(self):
         raise NotImplementedError
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index acb327d..ad4c229 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -44,9 +44,9 @@
         return socket.socketpair()
 
     def close(self):
+        super().close()
         for sig in list(self._signal_handlers):
             self.remove_signal_handler(sig)
-        super().close()
 
     def add_signal_handler(self, sig, callback, *args):
         """Add a handler for a signal.  UNIX only.
