public static CompletableFuture<AsyncConnection> createAsyncConnection(URI connectionUri,
    Configuration conf, final User user) {
    return createAsyncConnection(connectionUri, conf, user, null);
  }
Create a new AsyncConnection instance using the passed {@code connectionUri}, {@code conf} and
{@code user}. AsyncConnection encapsulates all housekeeping for a connection to the cluster.
All tables and interfaces created from returned connection share zookeeper connection(if used),
meta cache, and connections to region servers and masters.
<p>
The caller is responsible for calling {@link AsyncConnection#close()} on the returned
connection instance.
<p>
Usually you should only create one AsyncConnection instance in your code and use it everywhere
as it is thread safe.
@param connectionUri the connection uri for the hbase cluster
@param conf          configuration
@param user          the user the asynchronous connection is for
@return AsyncConnection object wrapped by CompletableFuture
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java