public Optional<Result> getIfAvailable(long timeout) {
            if (availableResult.isPresent()) return availableResult;
            availableResult = futureResult.getIfAvailable(timeout, TimeUnit.MILLISECONDS);
            availableResult.ifPresent(target::modifyTargetResult);
            return availableResult;
        }
Returns the result of this by blocking until timeout if necessary. 

@return the result if available, or empty otherwise
container-search/src/main/java/com/yahoo/search/federation/FederationResult.java