How Go runtime makes concurrent code simple
The things are different in Go runtime: the scheduler is preemptive, so it can "pause" goroutines at any point: not only at function calls, at loops, but on just any execution point (almost). This makes writing concurrent code dead easy: there's no "async" functions, lambdas or blocks of code, every function or call are the same, being them executed in "main" thead or in a goroutine.
Let's look at the mention above code being written in Go:
No let!, await, async, do!, StartAsTask, match! and so on. Need to run some code concurrently? Add go keyword. Done.