@RequiresBlockingContext
  public static <E extends Throwable> void run(@NotNull ThrowableRunnable<E> action) throws E {
    compute(() -> {
      action.run();
      return null;
    });
  }
@RequiresBlockingContext
  public static <E extends Throwable> void run(@NotNull ThrowableRunnable<E> action)