next = function(err, data) {
    self._isConnecting = false;
    if (cb) {
      cb(err, data);
    }
  }
Connect to the broker and receive its metadata.

Connects to a broker by establishing the client and fetches its metadata.

@param {object} metadataOptions - Options to be sent to the metadata.
@param {string} metadataOptions.topic - Topic to fetch metadata for. Empty string is treated as empty.
@param {boolean} metadataOptions.allTopics - Fetch metadata for all topics, not just the ones we know about.
@param {int} metadataOptions.timeout - The timeout, in ms, to allow for fetching metadata. Defaults to 30000ms
@param  {Client~connectionCallback} cb - Callback that indicates we are
done connecting.
@return {Client} - Returns itself.