def blocking_request(cmd, timeout)
      raise BlockingError, "Blocking request not allowed on EM main thread for command #{cmd.inspect}" if EM.reactor_thread?
      # Use a queue to block and wait for response
      response_queue = Queue.new
      # Need to execute on EM main thread where command client is running
      EM.next_tick { @client.send_command(cmd, false, timeout) { |response| response_queue << response } }
      return response_queue.shift
    end
def blocking_request(cmd, timeout)
      raise BlockingError, "Blocking request not allowed on EM main thread for command #{cmd.inspect}" if EM.reactor_thread?
      # Use a queue to block and wait for response
      response_queue = Queue.new
      # Need to execute on EM main thread where command client is running
      EM.next_tick { @client.send_command(cmd, false, timeout) { |response| response_queue << response } }
      return response_queue.shift
    end
Provides a blocking request for the given command
 Can only be called when on EM defer thread

 === Parameters
 cmd(Hash):: request to send

 === Return
 response(String):: raw response

 === Raise
 BlockingError:: If request called when on EM main thread