Алексей, привет. В целом, вариант с MutableSharedFlow сработал.
Однако, я всё равно не понимаю, почему не сработал MutableStateFlow.
По логике, да, тут подходит SharedFlow, так как мы показываем не state, а серию обновлений этого state. Но ведь ситуация, если у нас просто state меняется быстро также возможна. Условно, если брать описанный в статье пример — мы можем сразу после INITIALIZED перейти в SUCCESS.
Вот по своему контракту StateFlow является conflated, то есть не имеет поддержки никакого backpressure, и если consumer работает медленно, или producer очень быстро - то необработанные значения просто будут скипнуты.
Глубоко объяснить мотивацию, почему сделали именно эти два вида StateFlow, я не могу, поэтому предлагаю просто принять как данность)