It's indeed suboptimal to work with listeners like that, just launch new operation. It may be fine if you have a couple cases, but very soon becomes very tedious and error prone. Much better to use an adapter that converts listeners to Flow.
There is some community library for that (inspired by RxBindings), but didn't try it