There is a fine balance here, I believe. Java plans on introducing something called structured concurrency to tackle this problem, but even without it I don’t believe that this is a unidirectional tradeoff. Async programming even with syntactic sugar can be overwhelming easily as well.
Then you keep pushing stuff to other threads "just to be sure", which may hurt performance but the worst part becomes reading that code.