public CompletableFuture<List<String>> list(String path, long timeoutMs) {
    CompletableFuture<List<String>> future = list(path);
    TimerTask timerTask = getTimerTask(timeoutMs, future, "LIST");
    retryTimer.newTimeout(timerTask, timeoutMs + 1, TimeUnit.MILLISECONDS);
    return future;
  }
A very simple read only zookeeper implementation without watcher support.
hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java