code: function(url, params, callback) {
          var id = OpenLayers.Protocol.Script.register(callback);
          var name = OpenLayers.String.format(this.callbackTemplate, {id: id});
          params = OpenLayers.Util.extend({}, params);
          params[this.callbackKey] = this.callbackPrefix + name;
          url = OpenLayers.Util.urlAppend(
              url, OpenLayers.Util.getParameterString(params)
          );
          var script = document.createElement("script");
          script.type = "text/javascript";
          script.src = url;
          script.id = "OpenLayers_Protocol_Script_" + id;
          this.pendingRequests[script.id] = script;
          var head = document.getElementsByTagName("head")[0];
          head.appendChild(script);
          return script;
      }
docs: APIMethod: filterToParams
  Optional method to translate an <OpenLayers.Filter> object into an object
  that can be serialized as request query string provided.  If a custom
  method is not provided, any filter will not be serialized.
  
  Parameters:
  filter - {<OpenLayers.Filter>} filter to convert.
  params - {Object} The parameters object.
  
  Returns:
  {Object} The resulting parameters object.
   
  Method: createRequest
  Issues a request for features by creating injecting a script in the
  document head.
  
  Parameters:
  url - {String} Service URL.
  params - {Object} Query string parameters.
  callback - {Function} Callback to be called with resulting data.
  
  Returns:
  {HTMLScriptElement} The script pending execution.