code: @NotNull
      public static <T> Exceptional<T> of(@NotNull ThrowableSupplier<T, Throwable> supplier) {
          Objects.requireNonNull(supplier);
          try {
              return new Exceptional<T>(supplier.get(), null);
          } catch (Throwable throwable) {
              return of(throwable);
          }
      }
docs: Returns an {@code Exceptional} with value provided by given {@code ThrowableSupplier} function.
  
  @param <T> the type of value
  @param supplier  a supplier function
  @return an {@code Exceptional}
  @throws NullPointerException if {@code supplier} is null