"There appears to be a bug in the TagParseState when the comparison operator '<' is encountered in the body of a script tag. It appears to get flagged as an open tag and then the next '</' closes it. In my case, the next '</' is the script tag. The ScriptParseState chomps everything until it encounters a second </script> tag.
A live link that demonstrates this bug is here:
The '<' near line 2826 in the script body that begins near line 2759 begins a new tag 'arraykeywords.length' which gets closed by the '</' in the closing script tag. The ScriptParseState chomps all the html until it sees the end script tag near line 3385.
At the moment, I'm not sure of a solution other than pushing the script tag handling up to the TagParseState and treating it like CDATA is."