code: function() {
          var drawn = OpenLayers.Tile.prototype.draw.apply(this, arguments);
          if (drawn) {
              if (this.isLoading) {
                  this.abortLoading();
                  //if we're already loading, send 'reload' instead of 'loadstart'.
                  this.events.triggerEvent("reload"); 
              } else {
                  this.isLoading = true;
                  this.events.triggerEvent("loadstart");
              }
              this.url = this.layer.getURL(this.bounds);
  
              if (this.layer.useJSONP) {
                  // Use JSONP method to avoid xbrowser policy
                  var ols = new OpenLayers.Protocol.Script({
                      url: this.url,
                      callback: function(response) {
                          this.isLoading = false;
                          this.events.triggerEvent("loadend");
                          this.json = response.data;
                      },
                      scope: this
                  });
                  ols.read();
                  this.request = ols;
              } else {
                  // Use standard XHR
                  this.request = OpenLayers.Request.GET({
                      url: this.url,
                      callback: function(response) {
                          this.isLoading = false;
                          this.events.triggerEvent("loadend");
                          if (response.status === 200) {
                              this.parseData(response.responseText);
                          }
                      },
                      scope: this
                  });
              }
          } else {
              this.unload();
          }
          return drawn;
      }
docs: Method: draw
  Check that a tile should be drawn, and draw it.
  In the case of UTFGrids, "drawing" it means fetching and
  parsing the json.
  
  Returns:
  {Boolean} Was a tile drawn?