public CompletableFuture<byte[]> get(final String path, final long timeoutMs) {
    CompletableFuture<byte[]> future = get(path);
    TimerTask timerTask = getTimerTask(timeoutMs, future, "GET");
    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