code: function (callback) { // # 1
  
            var address;
            if (self.conf.zookeeper) {
              if (typeof self.conf.zookeeper === 'string' || self.conf.zookeeper instanceof String) {
                address = self.conf.zookeeper;
              } else {
                if (self.conf.zookeeper.address)  address = self.conf.zookeeper.address;
              }
            }
  
            self.nodeManager = new NodeManager(
              address,
              true,
              function (err, message) {
                if (!err) {
                  console.info(' (init) ZOOKEEPER is connected');
                  self.nodeManager.createEphemeralPath(
                    NodeConstants.META_PATH + NodeConstants.GW_SERVER_PATH + '/' + self.conf.host + ':' + self.conf.port,
                    function (err, message) {
                      console.info('        ZOOKEEPER /' + self.conf.host + ':' + self.conf.port);
  
                      // init balacing config
                      self.nodeManager.getConfigInfo('balancing', function (data) {
                        if (data) {
                          self.conf.balancing = data;
                        }
                      });
  
                      callback(err, message);
                    }
                  );
                } else {
                  callback(err, message);
                }
              }
            );
  
          }
docs: ASYNC ARRAY (START)