Промисы в PHP: почему try-catch ловит не все ошибки?
Я тоже копался с асинхронным PHP и промисами, ловить ошибки через try-catch там получается не всегда. try-catch реально работает только на синхронных ошибках, а когда внутри then выкидываешь исключение или возвращаешь rejected промис - этот try-catch мимо проходит, потому что промисы сами асинхронно всё обрабатывают. Проверял разные варианты и понял, что единственынй вариант - цеплять catch в конце промис-цепочки, там ловится почти всё.
Понимаю, что хочется один try-catch сверху, как в обычном коде, но с промисами так не выйдет. Пробовал оборачивать вокруг разных участков - срабатывает только на первой части или синхронной. Есть ли лайфхак, чтобы не вешать catch на каждый then - не нашёл. В итоге проще цеплять catch в конце. Может, кто-то сталкивался и может дать советы, но мне кажется, что в асинхронном PHP нормальную обработку без обрезанных catch не сделать.