But if you are writing framework or library that has to deal with both, its:
result = fn()
if isawaitable(result):
result = await result
And turns out isawaitable is not that fast so things like GraphQL libraries that run above logic thousands of times per request get noticeably slow.