I added a throw statement to the top of my function to aid debugging, and the critical return statement from later in the code was dropped which I only discovered after removing the throw statement and strange errors occurring.

What did you expect to happen?

return; statement should be flagged in unreachable code if and only if it would be flagged in equivalent reachable code. (At least that's how I read the comment in the source code.)

If we were to remove the throw line, the return; statement would not be flagged; therefore it should not be flagged with the throw statement present.

What actually happened? Please include the actual, raw output from ESLint.