docs: function open(url, options, callback) {
    // TODO:
    //
    // - headers
    // - useragent
    // - POST
    // - response
    // - inject
    //
    async.series([
      next => {
        this.__page__.invoke('open', url, options, (err, response) => {
          if (err) {
            next(err);
            return;
          }
  
          // Can be empty on error
          this.__response__ = response;
  
          // Save response data in tab info
          this.__tabs__[this.__tabIndex__].response = this.__response__;
  
          next();
        });
      },
  
      next => this.__pageWait__(null, null, next),
  
      next => {
        // If is not html page - finish here
        /*if ((self.__response__.contentType || '').indexOf('text/html') === -1) {
          callback();
          return;
        }*/
  
        // Inject client scripts from options after load
        async.eachSeries(this.__options__.inject, (scriptPath, cb) => {
          let fileContent;
  
          try {
            fileContent = fs.readFileSync(scriptPath, 'utf-8');
          } catch (e) {
            return cb(e);
          }
  
          this.__page__.invoke('winAsync', 'webContents.executeJavaScript', fileContent, cb);
        }, next);
      }
    ], callback);
  }