docs: def ignore_after(seconds, coro=None, *args, timeout_result=None):
      '''Execute the specified coroutine and return its result. Issue a
      cancellation request after seconds have elapsed. When a timeout
      occurs, no exception is raised. Instead, timeout_result is
      returned.
  
      If coro is None, the result is an asynchronous context manager
      that applies a timeout to a block of statements. For the context
      manager case, the resulting context manager object has an expired
      attribute set to True if time expired.
  
      Note: ignore_after() may also be composed with other timeout
      operations. TimeoutCancellationError and UncaughtTimeoutError
      exceptions might be raised according to the same rules as for
      timeout_after().
      '''
      if coro:
          return _ignore_after_func(seconds, False, coro, args, timeout_result)
  
      return TimeoutAfter(seconds, ignore=True)