I just want to keep it simple.
Async "infects" you code: for it to bring benefits your whole codebase needs to be doing it (ingesting requests, db calls, web API calls).
Due to this we see "split" stacks in programming languages: one lib stack for synchronous, and one for async.
I did not think the benefits of better performance under load is worth the mental overhead of doing async everywhere. So i went with blocking calls and virtual threads. No regrets.