That's why Python does the contrary and let you use the event loop explicitly. But then the problem is that you have to deal with it even for simple things.
I think the balance is node, which allows an implicit event loop (via async/await), or an explicit event loop (via using coroutines as standins for async functions and manually yielding them).