In my experience in practice there is no big difference, really, its just a matter of a few keywords.<p>As for &quot;having to change an entire call stack&quot;, that just stopped happening after a while. The rule of thumb was that if the function is impure (e.g. relying on mutable state) then it will likely become async, too. That lets me plan ahead.