asyncio/docs: Replace Python 4.0 -> 3.10 (GH-9579)

diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst
index bb693d7..1a50436 100644
--- a/Doc/library/asyncio-task.rst
+++ b/Doc/library/asyncio-task.rst
@@ -277,7 +277,7 @@
    when the coroutine completes.
 
    The *loop* argument is deprecated and scheduled for removal
-   in Python 4.0.
+   in Python 3.10.
 
    .. _asyncio_example_sleep:
 
@@ -435,7 +435,7 @@
    If the wait is cancelled, the future *aw* is also cancelled.
 
    The *loop* argument is deprecated and scheduled for removal
-   in Python 4.0.
+   in Python 3.10.
 
    .. _asyncio_example_waitfor:
 
@@ -487,7 +487,7 @@
         done, pending = await asyncio.wait(aws)
 
    The *loop* argument is deprecated and scheduled for removal
-   in Python 4.0.
+   in Python 3.10.
 
    *timeout* (a float or int), if specified, can be used to control
    the maximum number of seconds to wait before returning.
@@ -888,7 +888,7 @@
 .. note::
 
    Support for generator-based coroutines is **deprecated** and
-   is scheduled for removal in Python 4.0.
+   is scheduled for removal in Python 3.10.
 
 Generator-based coroutines predate async/await syntax.  They are
 Python generators that use ``yield from`` expressions to await
@@ -914,7 +914,7 @@
             await old_style_coroutine()
 
     This decorator is **deprecated** and is scheduled for removal in
-    Python 4.0.
+    Python 3.10.
 
     This decorator should not be used for :keyword:`async def`
     coroutines.
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index b52aad8..743e82b 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -384,8 +384,8 @@
     if loop is None:
         loop = events.get_running_loop()
     else:
-        warnings.warn("The loop argument is deprecated and scheduled for"
-                      "removal in Python 4.0.",
+        warnings.warn("The loop argument is deprecated and scheduled for "
+                      "removal in Python 3.10.",
                       DeprecationWarning, stacklevel=2)
 
     fs = {ensure_future(f, loop=loop) for f in set(fs)}
@@ -414,8 +414,8 @@
     if loop is None:
         loop = events.get_running_loop()
     else:
-        warnings.warn("The loop argument is deprecated and scheduled for"
-                      "removal in Python 4.0.",
+        warnings.warn("The loop argument is deprecated and scheduled for "
+                      "removal in Python 3.10.",
                       DeprecationWarning, stacklevel=2)
 
     if timeout is None:
@@ -595,8 +595,8 @@
     if loop is None:
         loop = events.get_running_loop()
     else:
-        warnings.warn("The loop argument is deprecated and scheduled for"
-                      "removal in Python 4.0.",
+        warnings.warn("The loop argument is deprecated and scheduled for "
+                      "removal in Python 3.10.",
                       DeprecationWarning, stacklevel=2)
 
     future = loop.create_future()