Стоит отметить, что у асинхронности есть своя цена:
1. Код сильно усложняется. ТО что раньше было простым агоритмом станивится макаронами из очередей воткнутых друг в друга. Отлаживать проблемы в таком коде становится (значительно) сложнее.
2. Задержка ответа деградирует, иногда в сильно широких пределах. Соотвественно если пределы ограничены, ( как например стандартное веб приложение с пользователем, АПИ для мобилки итп). То стоит подумать, насколько решаемая асинхронностью проблема реальна. Борьда с такими задержками требует непосредственных усилий разработчика, часто уже после отказов и инцидентов