*/
public synchronized boolean init(final InitCallback initCallback)
throws IOException {
Preconditions.checkState(this.zk == null, "zk not null in ZKClient.init");
initCallBack = initCallback;
final Retryable retry = new Retryable() {
public boolean doTry() throws Exception {
// Wait on this latch for a connection to complete
// It's important that every try gets its own latch
final CountDownLatch latch = new CountDownLatch(1);
final Watcher watcher = new Watcher() {