@RequiresBlockingContext
  public <R> R computeCancellable(@NotNull Supplier<R> action) {
    var result = new Ref<R>();
    runCancellable(() -> {
      result.set(action.get());
    });
    return result.get();
  }
@RequiresBlockingContext
  public <R> R computeCancellable(@NotNull Supplier<R> action)