createNewTarget = async () => {
    await cleanUpListenersOnClient();
    const target = await targetHandler.createTarget(finalTargetUrl);
    await connect_to_cri(target);
    targetHandler.register(_options.name, target);
  }
Launches a new tab. If url is provided, the new tab is opened with the url loaded.
@example
await openTab('https://taiko.dev')
@example
await openTab() # opens a blank tab.
@example
await openTab('https://taiko.dev', {name: 'taiko'}) # Tab with identifier
@param {string} [targetUrl=undefined] - Url of page to open in newly created tab.
@param {Object} options
@param {boolean} [options.waitForNavigation=true] - Wait for navigation after the reload. Default navigation timeout is 5000 milliseconds, to override pass `{ navigationTimeout: 10000 }` in `options` parameter.
@param {string} [options.name] - Tab identifier
@param {number} [options.navigationTimeout=5000] - Navigation timeout value in milliseconds for navigation after click. Accepts value in milliseconds.
@param {number} [options.waitForStart=100] - time to wait to check for occurrence of page load events. Accepts value in milliseconds.
@param {string[]} [options.waitForEvents = []] - Page load events to implicitly wait for. Events available to wait for ['DOMContentLoaded', 'loadEventFired', 'networkAlmostIdle', 'networkIdle', 'firstPaint', 'firstContentfulPaint', 'firstMeaningfulPaint', 'targetNavigated']

@returns {Promise<void>}