the parser may return an HttpException inside an IOException, forward it as such
use ParserException when parsing the data fails because the data are invalid
so it's not confused with a benign IOException