# File lib/brb/event_machine.rb, line 48
      def open_server(uri, klass, opts = {})
        host, port = parse_uri(uri)
        max = 80 # Nb try before giving up

        begin
          uri = "brb://#{host}:#{port}"
          ensure_em_is_started!

          # Schedule server creation for thread safety

          q = Queue.new
          EM.schedule do
            q << EM::start_server(host, port, klass, opts.merge(:uri => uri))
          end

          # Wait for server creation with the q.pop

          return uri, q.pop

        rescue Exception => e
          max -= 1
          port += 1
          retry if max > 0
          BrB.logger.error e.backtrace.join("\n")
          raise "#{e} - BrB Tcp Event machine Can not bind on #{host}:#{port}"
        end

      end