text: 'use strict';
  
  const EventEmitter = require('events');
  const dns = require('dns');
  
  const devtools = require('./lib/devtools.js');
  const Chrome = require('./lib/chrome.js');
  
  // XXX reset the default that has been changed in
  // (https://github.com/nodejs/node/pull/39987) to prefer IPv4. since
  // implementations alway bind on 127.0.0.1 this solution should be fairly safe
  // (see #467)
  if (dns.setDefaultResultOrder) {
      dns.setDefaultResultOrder('ipv4first');
  }
  
  function CDP(options, callback) {
      if (typeof options === 'function') {
          callback = options;
          options = undefined;
      }
      const notifier = new EventEmitter();
      if (typeof callback === 'function') {
          // allow to register the error callback later
          process.nextTick(() => {
              new Chrome(options, notifier);
          });
          return notifier.once('connect', callback);
      } else {
          return new Promise((fulfill, reject) => {
              notifier.once('connect', fulfill);
              notifier.once('error', reject);
              new Chrome(options, notifier);
          });
      }
  }
  
  module.exports = CDP;
  module.exports.Protocol = devtools.Protocol;
  module.exports.List = devtools.List;
  module.exports.New = devtools.New;
  module.exports.Activate = devtools.Activate;
  module.exports.Close = devtools.Close;
  module.exports.Version = devtools.Version;
  