docs: public <R> R fold(Function<? super T,? extends R> success, Function<? super Throwable,? extends R> failure){
          try {
              return success.apply(future.join());
          }catch(Throwable t){
              return failure.apply(t);
          }
  
      }