Consider a coroutine which calls into another coroutine:
async def foo(bar):
     result = await bar()
     return result
This works fine if bar is a coroutine.
What do I need to do (i.e. with what do I need to wrap the call to bar) so that this code does the right thing if bar is a normal function?
It is perfectly possible to define a coroutine with async def even if it never does anything asynchronous (i.e. never uses await).
However, the question asks how to wrap/modify/call a regular function bar inside the code for foo such that bar can be awaited.
 
     
    