diff --git a/Lib/asyncio/queues.py b/Lib/asyncio/queues.py
index ed11662..3b4dc21 100644
--- a/Lib/asyncio/queues.py
+++ b/Lib/asyncio/queues.py
@@ -9,7 +9,7 @@
 from . import events
 from . import futures
 from . import locks
-from .tasks import coroutine
+from .coroutines import coroutine
 
 
 class QueueEmpty(Exception):
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py
index 9478b95..f0fcdd2 100644
--- a/Lib/test/test_asyncio/test_selector_events.py
+++ b/Lib/test/test_asyncio/test_selector_events.py
@@ -348,7 +348,7 @@
             self.loop._sock_connect.call_args[0])
 
     def test_sock_connect_timeout(self):
-        # Tulip issue #205: sock_connect() must unregister the socket on
+        # asyncio issue #205: sock_connect() must unregister the socket on
         # timeout error
 
         # prepare mocks
diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py
index 2273049..242b377 100644
--- a/Lib/test/test_asyncio/test_streams.py
+++ b/Lib/test/test_asyncio/test_streams.py
@@ -580,7 +580,7 @@
 
     @unittest.skipIf(sys.platform == 'win32', "Don't have pipes")
     def test_read_all_from_pipe_reader(self):
-        # See Tulip issue 168.  This test is derived from the example
+        # See asyncio issue 168.  This test is derived from the example
         # subprocess_attach_read_pipe.py, but we configure the
         # StreamReader's limit so that twice it is less than the size
         # of the data writter.  Also we must explicitly attach a child
@@ -621,7 +621,7 @@
         self.addCleanup(asyncio.set_event_loop, None)
         asyncio.set_event_loop(self.loop)
 
-        # Tulip issue #184: Ensure that StreamReaderProtocol constructor
+        # asyncio issue #184: Ensure that StreamReaderProtocol constructor
         # retrieves the current loop if the loop parameter is not set
         reader = asyncio.StreamReader()
         self.assertIs(reader._loop, self.loop)
@@ -630,7 +630,7 @@
         self.addCleanup(asyncio.set_event_loop, None)
         asyncio.set_event_loop(self.loop)
 
-        # Tulip issue #184: Ensure that StreamReaderProtocol constructor
+        # asyncio issue #184: Ensure that StreamReaderProtocol constructor
         # retrieves the current loop if the loop parameter is not set
         reader = mock.Mock()
         protocol = asyncio.StreamReaderProtocol(reader)
diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py
index 5ccdafb..ea85e19 100644
--- a/Lib/test/test_asyncio/test_subprocess.py
+++ b/Lib/test/test_asyncio/test_subprocess.py
@@ -266,7 +266,7 @@
         self.assertTrue(transport.resume_reading.called)
 
     def test_stdin_not_inheritable(self):
-        # Tulip issue #209: stdin must not be inheritable, otherwise
+        # asyncio issue #209: stdin must not be inheritable, otherwise
         # the Process.communicate() hangs
         @asyncio.coroutine
         def len_message(message):
diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py
index 657a427..7fcf402 100644
--- a/Lib/test/test_asyncio/test_windows_events.py
+++ b/Lib/test/test_asyncio/test_windows_events.py
@@ -132,7 +132,8 @@
         self.assertTrue(fut.result())
         self.assertTrue(0 <= elapsed < 0.3, elapsed)
 
-        # Tulip issue #195: cancelling a done _WaitHandleFuture must not crash
+        # asyncio issue #195: cancelling a done _WaitHandleFuture
+        # must not crash
         fut.cancel()
 
     def test_wait_for_handle_cancel(self):
@@ -149,7 +150,8 @@
         elapsed = self.loop.time() - start
         self.assertTrue(0 <= elapsed < 0.1, elapsed)
 
-        # Tulip issue #195: cancelling a _WaitHandleFuture twice must not crash
+        # asyncio issue #195: cancelling a _WaitHandleFuture twice
+        # must not crash
         fut = self.loop._proactor.wait_for_handle(event)
         fut.cancel()
         fut.cancel()
