Don't know your use case, but I've used it, and I find it makes it very hard to follow the flow of the code... instead I've used RxJava or Coroutines Channel... the former can have a CompositeSubscription that can be cancelled, the latter has Jobs that can be cancelled if set up well...