_createConnection ({ auth }, address, release) {
    return this._createChannelConnection(address).then(connection => {
      connection.release = () => {
        connection.idleTimestamp = Date.now()
        return release(address, connection)
      }
      this._openConnections[connection.id] = connection

      return this._authenticationProvider.authenticate({ connection, auth })
        .catch(error => {
          // let's destroy this connection
          this._destroyConnection(connection)
          // propagate the error because connection failed to connect / initialize
          throw error
        })
    })
  }
Create a new connection and initialize it.
@return {Promise<Connection>} promise resolved with a new connection or rejected when failed to connect.
@access private