@Override
                public void run() {
                  if (future.isCancelled()) return;

                  Disposer.dispose(listenerDisposable); // remove listener early to prevent firing it during continuation execution
                  try {
                    if (!progressIndicator.isCanceled()) {
                      continuation.getAction().run();
                    }
                  }
                  finally {
                    future.complete(null);
                  }
                }
@Override
                public void run()