Design Choices#

Coroutines or functions#

It is quite easy to call sync and trigger async execution from a coroutine and hard to trigger async execution from a function, see Async compatibility. For this reason coroutines are preferred even in cases where IO seems unlikely.