I don't know if strategy is any better. `CancellableTaskListener`?