connect(
      fullLifeCycleTest, outerFrameReconnectSupported,
      innerFrameMigrationSupported, reverse) {
    if (!this.isTransportTestable_()) {
      return;
    }

    // Set the criteria for the initial handshake portion of the test.
    this.reinitializePromises_();

    this.innerFrameResponseReceived_.promise.then(
        this.checkChannelNames_, null, this);

    if (fullLifeCycleTest) {
      this.innerFrameResponseReceived_.promise.then(goog.bind(
          this.testReconnects_, this, outerFrameReconnectSupported,
          innerFrameMigrationSupported));
    }

    this.continueConnect_(reverse);
    return this.innerFrameResponseReceived_.promise;
  }
Starts the connection. The connection happens asynchronously.
@param {boolean} fullLifeCycleTest
@param {boolean} outerFrameReconnectSupported
@param {boolean} innerFrameMigrationSupported
@param {boolean} reverse
@return {!GoogPromise<undefined>}
@suppress {checkTypes} suppression added to enable type checking