def load_from_source!
    @chunks ||=
      begin
        ## we need to re-read the header because it contains information
        ## that we don't store in the index. actually i think it's just
        ## the mailing list address (if any), so this is kinda overkill.
        ## i could just store that in the index, but i think there might
        ## be other things like that in the future, and i'd rather not
        ## bloat the index.
        ## actually, it's also the differentiation between to/cc/bcc,
        ## so i will keep this.
        rmsg = location.parsed_message
        parse_header rmsg.header
        message_to_chunks rmsg
      rescue SourceError, SocketError, RMail::EncodingUnsupportedError => e
        warn_with_location "problem reading message #{id}"
        debug "could not load message: #{location.inspect}, exception: #{e.inspect}"

        [Chunk::Text.new(error_message.split("\n"))]

      rescue Exception => e

        warn_with_location "problem reading message #{id}"
        debug "could not load message: #{location.inspect}, exception: #{e.inspect}"

        raise e

      end
  end
def load_from_source!
    @chunks ||=
      begin
        ## we need to re-read the header because it contains information
        ## that we don't store in the index. actually i think it's just
        ## the mailing list address (if any), so this is kinda overkill.
        ## i could just store that in the index, but i think there might
        ## be other things like that in the future, and i'd rather not
        ## bloat the index.
        ## actually, it's also the differentiation between to/cc/bcc,
        ## so i will keep this.
        rmsg = location.parsed_message
        parse_header rmsg.header
        message_to_chunks rmsg
      rescue SourceError, SocketError, RMail::EncodingUnsupportedError => e
        warn_with_location "problem reading message #{id}"
        debug "could not load message: #{location.inspect}, exception: #{e.inspect}"

        [Chunk::Text.new(error_message.split("\n"))]

      rescue Exception => e

        warn_with_location "problem reading message #{id}"
        debug "could not load message: #{location.inspect}, exception: #{e.inspect}"

        raise e

      end
  end
this is called when the message body needs to actually be loaded.