code: function(options) {
          OpenLayers.Protocol.prototype.read.apply(this, arguments);
          options = OpenLayers.Util.applyDefaults(options, this.options);
          options.params = OpenLayers.Util.applyDefaults(
              options.params, this.options.params
          );
          if (options.filter && this.filterToParams) {
              options.params = this.filterToParams(
                  options.filter, options.params
              );
          }
          var response = new OpenLayers.Protocol.Response({requestType: "read"});
          var request = this.createRequest(
              options.url, 
              options.params, 
              OpenLayers.Function.bind(function(data) {
                  response.data = data;
                  this.handleRead(response, options);
              }, this)
          );
          response.priv = request;
          return response;
      }
docs: APIMethod: read
  Construct a request for reading new features.
  
  Parameters:
  options - {Object} Optional object for configuring the request.
  This object is modified and should not be reused.
  
  Valid options:
  url - {String} Url for the request.
  params - {Object} Parameters to get serialized as a query string.
  filter - {<OpenLayers.Filter>} Filter to get serialized as a
  query string.
  
  Returns:
  {<OpenLayers.Protocol.Response>} A response object, whose "priv" property
  references the injected script.  This object is also passed to the
  callback function when the request completes, its "features" property
  is then populated with the features received from the server.