If you go back to initializing a parser instance, this could be pushed down into the parser.

    @parsed_body = parser_instance.parsed_body
    @exception = parser_instance.exception

    def parser_instance
      @parser_instance ||= parser.new(body)
    end