Technically there is a third where it doesn't error if there is more than one root element ex. `<a></a><a></a>` but I am assuming that is intended behavior so it can parse xml fragments. Maybe there should be an option to toggle whether to parse as a fragment or not? Either way this one isn't a big deal because it is very easy to check after parsing if there are multiple root elements.
There are 2 scenarios I have found where the parser does not throw an error even though the xml is invalid.
root level elements without a close tag that aren't marked as a noChildNodes element
root level orphaned close tags (stops parsing after the first one encountered)
parse(" ")
// returns
// [ { tagName: 'a', attributes: {}, children: [] } ]