anchor.diff:  
     //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     function SocketMonitor(url, terminal) {
  -    // SocketMonitor watches the websocket
  -    // we use to talk to the server.
  -    // If it goes down outside of our control
  -    // it silently re-opens the socket.
  +    // Watches the websocket we talk to the server with.
  +    // If it goes down outside of our control it silently re-opens the socket.
       this.socket = null;
       this.start(url, terminal);
     };
  
positive.code:     Terminal.applyAddon(search);
      Terminal.applyAddon(winptyCompat);
      $(`#${cssId}`).show();
      window.term = term;
      term.open(terminalContainer);
      term.winptyCompatInit();
      term.fit();
      term.focus();
    };
  
    //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    var avatarName = 'lion'; // TODO: DROP
    var kataId = "<%= @kata.id %>";
    var replButton = $("#repl-button");
    var urlId = kataId + '/' + avatarName;
    var replURL = 'http://' + location.hostname + '/repl/' + urlId;
    var socketURL = 'ws://' + location.hostname + '/repl_ws/' + urlId;
  
    // The SocketMonitor for talking with the REPL on the server.
    var socket = null;
  
    // Request that the REPL be terminated.
    // Returns the promise for the DELETE request.
    var destroyRepl = function() {
      console.log('destroying repl');
      //term.writeln('\n\r\033[31mREPL disconnected\033[0m'); // [1]
      //term.writeln('REPL disconnected');
      return fetch(replURL, { method: 'DELETE' });
    };
  
    // Request that a REPL be created.
    // Returns the promise for the POST request.
    var createRepl = function() {
      var form = replButton.closest('form');
      //term.writeln('\033[32mConnecting to REPL\033[0m'); // [1]
      term.writeln('Connecting to REPL');
      console.log('creating repl');
      cd.saveCodeFromSyntaxHighlightEditors();
      const requestParams = {
        method: 'POST',
        body: JSON.stringify(form.serializeArray()),
        headers: { 'content-type': 'application/json' }
      };
      return fetch(replURL, requestParams);
    };
  
    // [1]
    //SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated; for octal literals use the "0o" prefix instead
  
    replButton.click(() => {
      createTerminalIn('repl-terminal-container');
      if (socket !== null) {
        socket.close();
        socket = null;
      }
      destroyRepl()
        .then(createRepl)
        .then(() => { socket = new SocketMonitor(socketURL, term); })
        .then(() => term.writeln('Ready...'));
    });
  
negative.code: 
    //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    const createTerminalIn = (cssId) => {
      const terminalContainer = document.getElementById(cssId) ;
      const term = new Terminal({
        cursorBlink: true, // optionElements.cursorBlink.checked,
  