def listen
      Net::HTTP.start(@address.host, @address.port) do |http|
        # TODO(@tadeboro): Add support for adding custom headers (auth)
        http.request(Net::HTTP::Get.new(@address)) do |response|
          # TODO(@tadeboro): Handle non-200 here
          response.read_body do |chunk|
            @parser.push(chunk).each { |e| yield(e) }
          end
        end
      end
    end
def listen
      Net::HTTP.start(@address.host, @address.port) do |http|
        # TODO(@tadeboro): Add support for adding custom headers (auth)
        http.request(Net::HTTP::Get.new(@address)) do |response|
          # TODO(@tadeboro): Handle non-200 here
          response.read_body do |chunk|
            @parser.push(chunk).each { |e| yield(e) }
          end
        end
      end
    end
Create new SSE client.

 Note that creating new client does not establish connection to the
 server. Connection is established by the {#listen} call and torn down
 automatically when {#listen returns}.

 @param address [URI] endpoint to connect to
 @param parser [Parser] object that should be used to parse incoming data
 @param headers [Hash] additional headers that should be added to request
 Listen for events from the server.

 To perform some action when event arrives, specify a block that gets
 executed eact time new event is availble like this:

     client.listen { |e| puts e }