static <T> Future<Set<T>> combineT(final Set<Future<T>> futures) {
        final List<Future> futureList = new ArrayList<>(futures);
        return CompositeFuture.join(futureList).compose(finished -> {
            final Set<T> result = new HashSet<>();
            finished.list().stream().filter(Objects::nonNull)