 
 	ensureZookeeperTrackers: (cb) =>
 		return cb() if @zkStart is "done"
-		@once "ready", cb
+		@_zkStartListener.push cb
 		return if @zkStart is "starting"
 		@zkStart = "starting"
+
+		@once 'ready', () ->
+			loop
+				callback = @_zkStartListener.pop()
+				return unless callback
+				callback()
 
 		@zk.once "connected", (err) =>
 			if err

			for regionName, region of regions
				if region.server.toString() is serverName
					delete @cachedRegionLocations[table]
					@prefetchRegionCacheList[table] = no



		@rpcTimeout = 30000
		@pingTimeout = 30000
		@zkStart = "init"
		@_zkStartListener = []
		@rootRegionZKPath = options.rootRegionZKPath or '/meta-region-server'
		@_prefetchRegionCacheList = {}
		@_prefetchRegionCacheListInProgress = {}
		@ensureZookeeperTrackers (err) =>
			@emit 'error', err if err

