For starters, debugging async stacktraces is a nightmare in many languages/runtimes.
There's also the cognitive load that async programming adds to humans.
And there's function coloring. It tends to spread and "infect" the codebase.
Also most languages have to duplicate their APIs to support both linear and async calls.
And then there's driver support. In languages I have seen, async support came with the requirement of specialized or at least adapted drivers.
For starters, debugging async stacktraces is a nightmare in many languages/runtimes.
There's also the cognitive load that async programming adds to humans.
And there's function coloring. It tends to spread and "infect" the codebase.
Also most languages have to duplicate their APIs to support both linear and async calls.
And then there's driver support. In languages I have seen, async support came with the requirement of specialized or at least adapted drivers.