My test shows, mode unset should be done at least not right after that (i.e. not in post call), pre PlayerPreThink will be fine.
And actually I do not see the problem in the parent code. He is skipping the immuned player by returning the next entity index. I believe you just didn't get the concept.