code: @NotNull
      public <U> Exceptional<U> map(@NotNull ThrowableFunction<? super T, ? extends U, Throwable> mapper) {
          if (throwable != null) {
              return of(throwable);
          }
          Objects.requireNonNull(mapper);
          try {
              return new Exceptional<U>(mapper.apply(value), null);
          } catch (Throwable t) {
              return of(t);
          }
      }
docs: Invokes mapping function on inner value if there were no exceptions.
  
  @param <U> the type of result value
  @param mapper  mapping function
  @return an {@code Exceptional} with transformed value if there were no exceptions
  @throws NullPointerException if {@code mapper} is null