code: public static <T extends Throwable, L> Either<L, Unit> trying(CheckedRunnable<T> runnable,
                                                                    Function<? super T, ? extends L> leftFn) {
          return Try.trying(runnable).toEither(leftFn);
      }
docs: Attempt to execute the {@link CheckedRunnable}, returning {@link Unit} in a right value. If the runnable throws
  an exception, apply <code>leftFn</code> to it, wrap it in a left value, and return it.
  
  @param runnable the runnable
  @param leftFn   a function mapping E to L
  @param <T>      the most contravariant exception that the runnable might throw
  @param <L>      the left parameter type
  @return {@link Unit} as a right value, or leftFn's mapping result as a left value