An excellent essay by Bob Nystrom on the concepts of asyncronous programming, and how various programming languages apply these concepts.

So, the next time you start telling me about some new hot language and how awesome its concurrency story is because it has asynchronous APIs, now you’ll know why I start grinding my teeth. Because it means you’re right back to red functions and blue ones.

Some of the comments are also interesting, especially this one, which I think represents my feelings.

The price of eliminating any distinction between sync and async functions is that you give up all control over sync vs. async behaviour.