What kind of support would you be looking for?
The alternative to asynchronous programming is working with locks, mutexes, blocking queues etc. The number of possible states a bunch of threads can be in, taking into account the synchronization primitives, rises exponentially (one new semaphore == 2x more states to consider).
It is hard to understand and causes very subtle bugs. That's why people try to find other ways to express how concurrently running processes interact - and a declarative approach, where processes/threads become values, are one of such attempts.