code: public List<Endpoint> awaitInitialEndpoints() throws InterruptedException {
          try {
              return initialEndpointsFuture.get();
          } catch (ExecutionException e) {
              throw new CompletionException(e.getCause());
          }
      }
docs: Waits until the initial {@link Endpoint}s are ready.
  
  @throws CancellationException if {@link #close()} was called before the initial {@link Endpoint}s are set