Using RxJs to handle cancelling of long running transactions