I took a look at the dask-ml codebase (with which I am not very familiar), and it does seem like some estimators are able to handle async clients, e.g. here. But the same pattern is not repeated in KMeans.
You may want to open an issue on dask-ml requesting this as a feature. Perhaps @TomAugspurger could comment further on how difficult it would be to retrofit KMeans with this?