diff --git a/asio/include/asio/impl/io_context.ipp b/asio/include/asio/impl/io_context.ipp
index a1d5959..e204ef2 100644
--- a/asio/include/asio/impl/io_context.ipp
+++ b/asio/include/asio/impl/io_context.ipp
@@ -61,10 +61,12 @@
   return s;
 }
 
+#if !defined(ASIO_NO_DEPRECATED)
 std::size_t io_context::run(asio::error_code& ec)
 {
   return impl_.run(ec);
 }
+#endif // !defined(ASIO_NO_DEPRECATED)
 
 std::size_t io_context::run_one()
 {
@@ -74,10 +76,12 @@
   return s;
 }
 
+#if !defined(ASIO_NO_DEPRECATED)
 std::size_t io_context::run_one(asio::error_code& ec)
 {
   return impl_.run_one(ec);
 }
+#endif // !defined(ASIO_NO_DEPRECATED)
 
 std::size_t io_context::poll()
 {
@@ -87,10 +91,12 @@
   return s;
 }
 
+#if !defined(ASIO_NO_DEPRECATED)
 std::size_t io_context::poll(asio::error_code& ec)
 {
   return impl_.poll(ec);
 }
+#endif // !defined(ASIO_NO_DEPRECATED)
 
 std::size_t io_context::poll_one()
 {
@@ -100,10 +106,12 @@
   return s;
 }
 
+#if !defined(ASIO_NO_DEPRECATED)
 std::size_t io_context::poll_one(asio::error_code& ec)
 {
   return impl_.poll_one(ec);
 }
+#endif // !defined(ASIO_NO_DEPRECATED)
 
 void io_context::stop()
 {
diff --git a/asio/include/asio/io_context.hpp b/asio/include/asio/io_context.hpp
index f18414d..fa0e3e6 100644
--- a/asio/include/asio/io_context.hpp
+++ b/asio/include/asio/io_context.hpp
@@ -225,8 +225,6 @@
    *
    * @return The number of handlers that were executed.
    *
-   * @throws asio::system_error Thrown on failure.
-   *
    * @note The run() function must not be called from a thread that is currently
    * calling one of run(), run_one(), poll() or poll_one() on the same
    * io_context object.
@@ -236,7 +234,9 @@
    */
   ASIO_DECL std::size_t run();
 
-  /// Run the io_context object's event processing loop.
+#if !defined(ASIO_NO_DEPRECATED)
+  /// (Deprecated: Use non-error_code overload.) Run the io_context object's
+  /// event processing loop.
   /**
    * The run() function blocks until all work has finished and there are no
    * more handlers to be dispatched, or until the io_context has been stopped.
@@ -263,6 +263,7 @@
    * without blocking.
    */
   ASIO_DECL std::size_t run(asio::error_code& ec);
+#endif // !defined(ASIO_NO_DEPRECATED)
 
   /// Run the io_context object's event processing loop to execute at most one
   /// handler.
@@ -275,13 +276,12 @@
    * returns @c true). Subsequent calls to run(), run_one(), poll() or
    * poll_one() will return immediately unless there is a prior call to
    * restart().
-   *
-   * @throws asio::system_error Thrown on failure.
    */
   ASIO_DECL std::size_t run_one();
 
-  /// Run the io_context object's event processing loop to execute at most one
-  /// handler.
+#if !defined(ASIO_NO_DEPRECATED)
+  /// (Deprecated: Use non-error_code overlaod.) Run the io_context object's
+  /// event processing loop to execute at most one handler.
   /**
    * The run_one() function blocks until one handler has been dispatched, or
    * until the io_context has been stopped.
@@ -295,6 +295,7 @@
    * @return The number of handlers that were executed.
    */
   ASIO_DECL std::size_t run_one(asio::error_code& ec);
+#endif // !defined(ASIO_NO_DEPRECATED)
 
   /// Run the io_context object's event processing loop to execute ready
   /// handlers.
@@ -303,13 +304,12 @@
    * until the io_context has been stopped or there are no more ready handlers.
    *
    * @return The number of handlers that were executed.
-   *
-   * @throws asio::system_error Thrown on failure.
    */
   ASIO_DECL std::size_t poll();
 
-  /// Run the io_context object's event processing loop to execute ready
-  /// handlers.
+#if !defined(ASIO_NO_DEPRECATED)
+  /// (Deprecated: Use non-error_code overload.) Run the io_context object's
+  /// event processing loop to execute ready handlers.
   /**
    * The poll() function runs handlers that are ready to run, without blocking,
    * until the io_context has been stopped or there are no more ready handlers.
@@ -319,6 +319,7 @@
    * @return The number of handlers that were executed.
    */
   ASIO_DECL std::size_t poll(asio::error_code& ec);
+#endif // !defined(ASIO_NO_DEPRECATED)
 
   /// Run the io_context object's event processing loop to execute one ready
   /// handler.
@@ -327,13 +328,12 @@
    * without blocking.
    *
    * @return The number of handlers that were executed.
-   *
-   * @throws asio::system_error Thrown on failure.
    */
   ASIO_DECL std::size_t poll_one();
 
-  /// Run the io_context object's event processing loop to execute one ready
-  /// handler.
+#if !defined(ASIO_NO_DEPRECATED)
+  /// (Deprecated: Use non-error_code overload.) Run the io_context object's
+  /// event processing loop to execute one ready handler.
   /**
    * The poll_one() function runs at most one handler that is ready to run,
    * without blocking.
@@ -343,6 +343,7 @@
    * @return The number of handlers that were executed.
    */
   ASIO_DECL std::size_t poll_one(asio::error_code& ec);
+#endif // !defined(ASIO_NO_DEPRECATED)
 
   /// Stop the io_context object's event processing loop.
   /**
