class Faye::RackStream

def hijack_rack_socket

def hijack_rack_socket
  return unless @socket_object.env['rack.hijack']
  @socket_object.env['rack.hijack'].call
  @rack_hijack_io = @socket_object.env['rack.hijack_io']
  queue = Queue.new
  EventMachine.schedule do
    begin
      EventMachine.attach(@rack_hijack_io, Reader) do |reader|
        reader.stream = self
        if @rack_hijack_io
          @rack_hijack_io_reader = reader
        else
          reader.close_connection_after_writing
        end
      end
    ensure
      queue.push(nil)
    end
  end
  queue.pop if EventMachine.reactor_running?
end