Это действительно должен быть комментарий, а не ответ (и с опозданием на месяц, действительно адресованный другим читателям), но когда он сталкивается с этим вопросом, проблема может заключаться не в том, что вам нужно ждать завершения всего наблюдаемого, но что ваши наблюдаемые на самом деле должны быть обещаниями.
Согласно https://rxjs.dev/guide/observable Наблюдаемые и обещания предназначены для двух разных вариантов использования. Если вы говорите: «Я знаю, как сделать это с обещаниями», то ответ, вероятно, обещания - правильное решение.
Я не могу сказать точно, но на основании имен (pastEvents, и getTrustedCourtList, очень похожи на основные функции типа «getter» ваших функций и то, как вы их используете, похоже, что вы используете Observables для координации асинхронной c работы. Это то, для чего нужны обещания.
Если вам просто нужно выполнить Шаг A, B & C, и когда они завершатся, используйте результаты для шага D, это обещания, а не Observables.
Если вы заботитесь только о том, что происходит при завершении, скорее всего, вы действительно хотите обещание.
Тем не менее, мое мнение таково, что наблюдаемые являются "заразными", то есть, как только вы их получили, вы должны продолжайте использовать их. Использование «toPromise» всегда немного рискованно, поскольку оно делает предположения о том, каким будет наблюдаемое, которое не обязательно допустимо, поэтому, если вы не можете изменить что-либо, если лежащие в основе объекты обещания, вам, вероятно, следует придерживаться наблюдаемых.