anchor.diff:    this.commandStorage = new CommandStorage();
     this.prompt = getConfig('promptLabel', ' >>');
     this.remotePath = getConfig('remotePath');
  -  this.request = getConfig('request', this.request);
  -}
  -
  -REPLConsole.prototype.request = request;
  +}
   
   REPLConsole.prototype.getUrl = function(path) {
     if (path) {
  
positive.code: }
  
  // XHR helpers
  function request(method, url, params, ok, fail) {
    var xhr = new XMLHttpRequest();
  
    xhr.open(method, url, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("Accept", "<%= Mime::WEB_CONSOLE_V2 %>");
    xhr.send(params);
  
    function isSuccess(status) {
      return status >= 200 && status < 300 || status === 304;
    }
  
    // optional callbacks
    ok   = ok || function() {};
    fail = fail || function() {};
  
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4) {
        if (isSuccess(xhr.status)) {
          ok(xhr);
        } else {
          fail(xhr);
        }
      }
    }
  }
  
  function postRequest(url, params, callback) {
    request("POST", url, params, callback);
  }
  
  function putRequest(url, params, callback) {
    request("PUT", url, params, callback);
  }
  
  window.REPLConsole = REPLConsole;
  
negative.code:   var self = this;
    var params = 'input=' + encodeURIComponent(line);
  
    putRequest(self.getUrl(), params, function(xhr) {
      var response = JSON.parse(xhr.responseText);
      self.writeOutput(response.output);
    }, function(xhr) {
  