registerStatusChangeListener_(tile) {
    // Notify listeners when the tile has loaded.
    this.handler.listen(
        tile, ee.layers.AbstractTile.EventType.STATUS_CHANGED, function() {
          var Status = ee.layers.AbstractTile.Status;

          switch (tile.getStatus()) {
            case Status.LOADED:
              const endTs = new Date().getTime();
              this.stats.addTileStats(tile.loadingStartTs_, endTs, tile.zoom);
              this.dispatchEvent(
                  new ee.layers.TileLoadEvent(this.getLoadingTilesCount()));
              break;
            case Status.THROTTLED:
              this.stats.incrementThrottleCounter(tile.zoom);
              this.dispatchEvent(
                  new ee.layers.TileThrottleEvent(tile.sourceUrl));
              break;
            case Status.FAILED:
              this.stats.incrementErrorCounter(tile.zoom);
              this.dispatchEvent(new ee.layers.TileFailEvent(
                  tile.sourceUrl, tile.errorMessage_));
              break;
            case Status.ABORTED:
              this.dispatchEvent(
                  new ee.layers.TileAbortEvent(this.getLoadingTilesCount()));
              break;
          }
        });
  }
Listen for tile status changes and respond accordingly.
@param {ee.layers.AbstractTile} tile
@private