async _startRequest(options, depth, previousUrl) {
    const skip = await this._skipRequest(options);
    if (skip) {
      this.emit(HCCrawler.Events.RequestSkipped, options);
      await this._markRequested(options);
      return;
    }
    const allowed = await this._checkAllowedRobots(options, depth, previousUrl);
    if (!allowed) {
      this.emit(HCCrawler.Events.RequestDisallowed, options);
      await this._markRequested(options);
      return;
    }
    await this._followSitemap(options, depth, previousUrl);
    const links = await this._request(options, depth, previousUrl);
    this._checkRequestCount();
    await this._followLinks(links, options, depth);
    await delay(options.delay);
  }
@param {!Object} options
@param {!number} depth
@param {string} previousUrl
@return {!Promise}
@private