private static AsyncClusterConnection createAsyncClusterConnection(Configuration conf,
    ConnectionRegistry registry, SocketAddress localAddress, User user) throws IOException {
    String clusterId = FutureUtils.get(registry.getClusterId());
    Class<? extends AsyncClusterConnection> clazz =
      conf.getClass(HBASE_SERVER_CLUSTER_CONNECTION_IMPL, AsyncClusterConnectionImpl.class,
        AsyncClusterConnection.class);
    try {
      return user
        .runAs((PrivilegedExceptionAction<? extends AsyncClusterConnection>) () -> ReflectionUtils
          .newInstance(clazz, conf, registry, clusterId, localAddress, user));
    } catch (Exception e) {
      throw new IOException(e);
    }
  }
The factory for creating {@link AsyncClusterConnection}.
hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClusterConnectionFactory.java