src/main/java/com/github/phantomthief/concurrent/MoreFutures.java
@Nonnull
    public static <K, V, X extends Throwable> Map<K, V> tryWait(@Nonnull Iterable<K> keys,
            @Nonnull Duration duration, @Nonnull ThrowableFunction<K, Future<V>, X> asyncFunc)
            throws X, TryWaitUncheckedException {
        checkNotNull(keys);
        checkNotNull(duration);
        checkNotNull(asyncFunc);
        return tryWait(keys, duration.toNanos(), NANOSECONDS, asyncFunc);
    }
@Nonnull
    public static <K, V, X extends Throwable> Map<K, V> tryWait(@Nonnull Iterable<K> keys,
            @Nonnull Duration duration, @Nonnull ThrowableFunction<K, Future<V>, X> asyncFunc)
            throws X, TryWaitUncheckedException {
        checkNotNull(keys);
        checkNotNull(duration);
        checkNotNull(asyncFunc);
        return tryWait(keys, duration.toNanos(), NANOSECONDS, asyncFunc);
    }
@ Nonnull public static < K , V , X extends Throwable > Map < K , V > tryWait ( @ Nonnull Iterable < K > keys , @ Nonnull Duration duration , @ Nonnull ThrowableFunction < K , Future < V > , X > asyncFunc ) throws X , TryWaitUncheckedException { checkNotNull ( keys ) ; checkNotNull ( duration ) ; checkNotNull ( asyncFunc ) ; return tryWait ( keys , duration . toNanos ( ) , NANOSECONDS , asyncFunc ) ; }
@see #tryWait(Iterable, long, TimeUnit, ThrowableFunction)

@throws TryWaitUncheckedException if not all calls are successful.
@see #tryWait ( Iterable long TimeUnit ThrowableFunction )