В чём разница между Observable и Promise?
Promise — это одно будущее значение, которое начинает выполняться немедленно и не может быть отменено. Observable — поток из нуля или более значений, ленивый до подписки, отменяемый через отписку и преобразуемый операторами вроде debounce, retry или switchMap. Для HTTP-запросов практическая выгода в отмене: подсказка в поиске может отбросить предыдущий запрос, пока пользователь продолжает печатать.