@Override
    public <R, E extends Throwable> R compute(final @NotNull ThrowableComputable<R, E> action) throws E {
      AtomicReference<R> result = new AtomicReference<>();
      run(() -> result.set(action.compute()));
      return result.get();
    }
@Override
    public <R, E extends Throwable> R compute(final @NotNull ThrowableComputable<R, E> action)