> After all threads and async serve different purposes: Threads when you're computing a lot, async when you're waiting a lot, no?
It doesn't have to be one or the other. Go uses coroutines and multiplexes them onto multiple OS-level threads (usually as many as there are cores).