Я никогда не использовал html agility pack, но я пошел дальше и посмотрел документацию.
Я вижу, что вы устанавливаете поле PreRequest в объекте HtmlWeb для делегата PreRequestHandler. Также есть поле PostResponse, которое принимает делегата PostResponseHandler. Похоже, что объект HtmlWeb будет передавать фактический ответ, полученный от сервера, в форме объекта HttpWebResponse.
Однако, когда ваш код в этом делегате заканчивается, похоже, что пакет гибкости продолжит делать то, что сделал бы. Выдает ли исключение, когда встречает не HTML? Возможно, вам придется выбросить собственное исключение из функции PostResponse и перехватить его при вызове Load ().
Как я уже сказал, я не пробовал ничего из этого. Надеюсь, это заставит вас начать в правильном направлении ..