The main reason I've encountered is that async is generally an all-or-nothing thing. It's generally not possible to take an existing code base and just "add a little async here and there". The entire thing has to be restructured from the ground up for async. The gain has to be really major for this to be worthwhile, more so the better your existing code already works.
This is sort of like the article's Problem 3, but it's not just maintaining two APIs, it's even creating the second API in the first place.
replies(1):