def METHOD_NAME(delay: Optional[float]) -> Timeout:
    """Timeout async context manager.
    Useful in cases when you want to apply timeout logic around block
    of code or in cases when asyncio.wait_for is not suitable. For example:
    >>> async with asyncio.timeout(10):  # 10 seconds timeout
    ...     await long_running_task()
    delay - value in seconds or None to disable timeout logic
    long_running_task() is interrupted by raising asyncio.CancelledError,
    the top-most affected timeout() context manager converts CancelledError
    into TimeoutError.
    """
    loop = events.get_running_loop()
    return Timeout(loop.time() + delay if delay is not None else None)