function readWord1() {
    containsEsc = false;
    var word;
    var first = true;
    var start = tokPos;
    for (;;) {
      var ch = input.charCodeAt(tokPos);
      if (isIdentifierChar(ch)) {
        if (containsEsc) {
          word += input.charAt(tokPos);
        }
        ++tokPos;
      } else if (ch === 92) { // "\"
        if (!containsEsc) {
          word = input.slice(start, tokPos);
        }
        containsEsc = true;
        if (input.charCodeAt(++tokPos) !== 117) { // "u"
          raise(tokPos, "Expecting Unicode escape sequence \\uXXXX");
        }
        ++tokPos;
        var esc = readHexChar(4);
        var escStr = String.fromCharCode(esc);
        if (!escStr) raise(tokPos - 1, "Invalid Unicode escape");
        if (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc))) {
          raise(tokPos - 4, "Invalid Unicode escape");
        }
        word += escStr;
      } else {
        break;
      }
      first = false;
    }
    return containsEsc ? word : input.slice(start, tokPos);
  }
Read an identifier, and return it as a string. Sets `containsEsc`
to whether the word contained a '\u' escape.

Only builds up the word character-by-character when it actually
containeds an escape, as a micro-optimization.

@returns {string|undefined}