def maybe_async(value):
if isinstance(value, (types.CoroutineType, types.GeneratorType, asyncio.Future)):
return value
else:
future = asyncio.Future()
future.set_result(value)
return future