you can implent something like futures on top of cml and use it as async. then you get async for stuff where async is useful and a proper way to write parallel programs for when async would lead to all the bad stuff async leads to.
i rarely write gui stuff and I find async is rarely what I need. in f# I at least have the option to use hopac.