bpo-33649: Add high-level APIs cheat-sheet (GH-9319)

diff --git a/Doc/library/asyncio-api-index.rst b/Doc/library/asyncio-api-index.rst
new file mode 100644
index 0000000..a4d0e1b
--- /dev/null
+++ b/Doc/library/asyncio-api-index.rst
@@ -0,0 +1,206 @@
+.. currentmodule:: asyncio
+
+
+=====================
+High-level APIs Index
+=====================
+
+This page lists all high-level async/await enabled asyncio APIs.
+
+
+Tasks
+=====
+
+Utilities to run asyncio programs, create Tasks, and
+await on multiple things with timeouts.
+
+.. list-table::
+    :widths: 30 70
+
+    * - :func:`run`
+      - Create event loop, run a coroutine, close the loop.
+
+    * - :func:`create_task`
+      - Start an asyncio Task.
+
+    * - ``await`` :func:`sleep`
+      - Sleep for a number of seconds.
+
+    * - ``await`` :func:`gather`
+      - Schedule and wait for things concurrently.
+
+    * - ``await`` :func:`wait_for`
+      - Run with a timeout.
+
+    * - ``await`` :func:`shield`
+      - Shield from cancellation.
+
+    * - ``await`` :func:`wait`
+      - Monitor for completeness.
+
+    * - :func:`current_task`
+      - Return the current Task.
+
+    * - :func:`all_tasks`
+      - Return all tasks for an event loop.
+
+    * - :class:`Task`
+      - Task object.
+
+
+.. rubric:: Examples
+
+* :ref:`Using asyncio.gather() to run things in parallel
+  <asyncio_example_gather>`.
+
+* :ref:`Using asyncio.wait_for() to enforce a timeout
+  <asyncio_example_waitfor>`.
+
+* :ref:`Cancellation <asyncio_example_task_cancel>`.
+
+* :ref:`Using asyncio.sleep() <asyncio_example_sleep>`.
+
+* See also the main :ref:`Tasks documentation page <coroutine>`.
+
+
+Queues
+======
+
+Queues should be used to distribute work amongst multiple asyncio Tasks,
+implement connection pools, and pub/sub patterns.
+
+
+.. list-table::
+    :widths: 30 70
+
+    * - :class:`Queue`
+      - A FIFO queue.
+
+    * - :class:`PriorityQueue`
+      - A priority queue.
+
+    * - :class:`LifoQueue`
+      - A LIFO queue.
+
+
+.. rubric:: Examples
+
+* :ref:`Using asyncio.Queue to distribute workload between several
+  Tasks <asyncio_example_queue_dist>`.
+
+* See also the :ref:`Queues documentation page <asyncio-queues>`.
+
+
+Subprocesses
+============
+
+Utilities to spawn subprocesses and run shell commands.
+
+.. list-table::
+    :widths: 30 70
+
+    * - ``await`` :func:`create_subprocess_exec`
+      - Create a subprocess.
+
+    * - ``await`` :func:`create_subprocess_shell`
+      - Run a shell command.
+
+
+.. rubric:: Examples
+
+* :ref:`Executing a shell command <asyncio_example_subprocess_shell>`.
+
+* See also the :ref:`subprocess APIs <asyncio-subprocess>`
+  documentation.
+
+
+Streams
+=======
+
+High-level APIs to work with network IO.
+
+.. list-table::
+    :widths: 30 70
+
+    * - ``await`` :func:`open_connection`
+      -  Establish a TCP connection.
+
+    * - ``await`` :func:`open_unix_connection`
+      -  Establish a Unix socket connection.
+
+    * - ``await`` :func:`start_server`
+      - Start a TCP server.
+
+    * - ``await`` :func:`start_unix_server`
+      - Start a Unix socket server.
+
+    * - :class:`StreamReader`
+      - High-level async/await object to receive network data.
+
+    * - :class:`StreamWriter`
+      - High-level async/await object to send network data.
+
+
+.. rubric:: Examples
+
+* :ref:`Example TCP client <asyncio_example_stream>`.
+
+* See also the :ref:`streams APIs <asyncio-streams>`
+  documentation.
+
+
+Synchronization
+===============
+
+Threading-like synchronization primitives that can be used in Tasks.
+
+.. list-table::
+    :widths: 30 70
+
+    * - :class:`Lock`
+      - A mutex lock.
+
+    * - :class:`Event`
+      - An event object.
+
+    * - :class:`Condition`
+      - A condition object.
+
+    * - :class:`Semaphore`
+      - A semaphore.
+
+    * - :class:`BoundedSemaphore`
+      - A bounded semaphore.
+
+
+.. rubric:: Examples
+
+* :ref:`Using asyncio.Event <asyncio_example_sync_event>`.
+
+* See also the documentation of asyncio
+  :ref:`synchronization primitives <asyncio-sync>`.
+
+
+Exceptions
+==========
+
+.. list-table::
+    :widths: 30 70
+
+
+    * - :exc:`asyncio.TimeoutError`
+      - Raised on timeout by functions like :func:`wait_for`.
+        Keep in mind that ``asyncio.TimeoutError`` is **unrelated**
+        to the built-in :exc:`TimeoutError` exception.
+
+    * - :exc:`asyncio.CancelledError`
+      - Raised when a Task is cancelled. See also :meth:`Task.cancel`.
+
+
+.. rubric:: Examples
+
+* :ref:`Handling CancelledError to run code on cancellation request
+  <asyncio_example_task_cancel>`.
+
+* See also the full list of
+  :ref:`asyncio-specific exceptions <asyncio-exceptions>`.