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