Вы когда-нибудь забывали про await?

А я однажды забыл написать await перед вызовом асинхронного метода в рабочем проекте.

Самое интересное, что локально, особенно в дебаге, всё работало как нужно и без ошибок.

Мы выложились на тестовую среду, и тестировщик завёл ошибку, которая меня удивила: ведь описанный им сценарий прекрасно отрабатывал локально. Но на тестовой среде что-то было не так.

Знаете, ошибки по невнимательности обнаружить сложнее всего. Вот вроде смотришь на неё, но не замечаешь в упор. Да-да, мозг коварен в такие моменты 🤯

Так вот, продебажив добрых полдня и обложив всё, что можно, логами, я всё-таки нашёл место «неисправности».

Оказалось, что вызванный асинхронный метод запускался, но код шёл дальше, не дожидаясь его завершения. Локально это не проявлялось из-за таймингов, а на тестовом контуре порядок выполнения оказался другим.

После того как добавил недостающий await, необходимый сценарий, конечно же, успешно отработал.

Этот пост не о том, почему и когда нужен await перед вызовом асинхронного метода. Он о том, как банальная невнимательность помогла закрепить знания.

Вы когда-нибудь забывали про await? | Сетка — социальная сеть от hh.ru Вы когда-нибудь забывали про await? | Сетка — социальная сеть от hh.ru