default CompletableFuture<Collection<ServerName>>
    getRegionServers(boolean excludeDecommissionedRS) {
    CompletableFuture<Collection<ServerName>> future = new CompletableFuture<>();
    addListener(
      getClusterMetrics(EnumSet.of(Option.SERVERS_NAME)).thenApply(ClusterMetrics::getServersName),
      (allServers, err) -> {
        if (err != null) {
          future.completeExceptionally(err);
        } else {
          if (!excludeDecommissionedRS) {
            future.complete(allServers);
          } else {
            addListener(listDecommissionedRegionServers(), (decomServers, decomErr) -> {
              if (decomErr != null) {
                future.completeExceptionally(decomErr);
              } else {
                future.complete(allServers.stream().filter(s -> !decomServers.contains(s))
                  .collect(ImmutableList.toImmutableList()));
              }
            });
          }
        }
      });
    return future;
  }
Returns current live region servers list wrapped by {@link CompletableFuture}
hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java