docs: function Navit(options, engineOptions) {
    if (!(this instanceof Navit)) { return new Navit(options, engineOptions); }
  
    this.__options__ = _.defaults({}, options || {}, {
      engine: 'phantomjs',
      inject: [],
      timeout: 10000,
      prefix: ''
    });
  
    this.__options__.engine = this.__options__.engine.toLowerCase();
  
    if ([ 'phantomjs', 'slimerjs', 'electron' ].indexOf(this.__options__.engine) === -1) {
      throw new NavitError(`Unrecognized engine: '${this.__options__.engine}'`);
    }
  
    this.__engineOptions__ = _.defaults({}, engineOptions || {}, DEFAULT_ENGINE_OPTIONS);
  
    this.__engine__ = null;
    this.__page__ = null;
    this.__queue__ = [];
    this.__response__ = null;
    this.__sandbox__ = {};
    this.__tabs__ = [];
    this.__tabIndex__ = -1;
    this.__headers__ = {}; // Custom headers, joined to each request
  
    this.afterOpen = null;
  
    // Register functions
    let functions = this.__options__.engine === 'electron' ? elFunctions : phFunctions;
  
    functions.forEach(path =>
      require(path).forEach(data => this.registerMethod(data[0], data[1])));
  }