I currently have a Cache-like object that has a `aget` method, which receives the name of the object to return and the callback coroutine if the key doesn't exist.

```py
import asyncio

class Cache:
    def __init__(self):
        self.cache = {}

    async def aget(self, name, default):
        try:
            return self.cache["name"]
        except KeyError:
            return await default

async def foo():
    pass

async def bar(cache):
    obj = await cache.aget("duh", foo())
    # If "duh" doesn't exist, then await foo() and return it

cache = Cache()

asyncio.run(bar(cache))

```

So supposing that the key DOES exist, then `foo()` will never be awaited and thus raises a `RuntimeWarning` complaining about the coroutine not being scheduled.

***Question:*** Is there a *clean* way to optionally await a coroutine, without the need to unpack the coroutine and its arguments like `aget("duh", foo, arg)`. I don't consider supressing the RuntimeWarning as an option since that exist for its usecase.