bpo-31620: have asyncio/queues not leak memory when you've exceptions during waiting (#3813)

diff --git a/Lib/asyncio/queues.py b/Lib/asyncio/queues.py
index 2d38972..1c66d67 100644
--- a/Lib/asyncio/queues.py
+++ b/Lib/asyncio/queues.py
@@ -167,6 +167,12 @@
                 yield from getter
             except:
                 getter.cancel()  # Just in case getter is not done yet.
+
+                try:
+                    self._getters.remove(getter)
+                except ValueError:
+                    pass
+
                 if not self.empty() and not getter.cancelled():
                     # We were woken up by put_nowait(), but can't take
                     # the call.  Wake up the next in line.