The reason is coroutines makes it easier to write async code and operators just feels more natural to use . As a bonus, Flow operators are all kotlin Extension Functions, which means either you, or libraries, can easily add operators and they will not feel weird to use (in RxJava observable.