connect (userAgent, boltAgent, authToken, shouldWaitReAuth) {
    throw new Error('not implemented')
  }
Connect to the target address, negotiate Bolt protocol and send initialization message.
@param {string} userAgent the user agent for this driver.
@param {Object} boltAgent the bolt agent for this driver.
@param {Object} authToken the object containing auth information.
@param {boolean} shouldWaitReAuth whether ot not the connection will wait for re-authentication to happen
@return {Promise<Connection>} promise resolved with the current connection if connection is successful. Rejected promise otherwise.