code: public static <T> List<Future<T>> invokeAndAwaitAll(ExecutorService pool, List<Callable<T>> tasks) {
          List<Future<T>> futures = executeAll(pool, tasks);
          awaitAll(pool, futures);
          return futures;
      }
docs: /* ------------------- Functions using a given pool -----------------