code: @Override
      public Future<T> recover(ThrowableFunction1<Throwable, T> recoverFunction) {
          Validator.requireNonNull(recoverFunction, "Null is not a valid function");
          // Create new future expected to hold the value of the mapped type
          FutureImpl<T> future = new FutureImpl<>();
  
          // installs a handler that will automatically recover the result/Try should it be needed
          onComplete(t -> future.complete(t.recover(recoverFunction)));
  
          return future;
      }
docs: /*
  (non-Javadoc)
  
  @see javascalautils.concurrent.Future#recover(java.util.function.Function)