def timeout_ask(timeout, op, *args)
      unless @max_queue_count.nil? || 0 == @max_queue_count || @queue.size() < @max_queue_count
        @ask_thread = Thread.current
        sleep(timeout) unless timeout.nil?
        @ask_thread = nil
        raise BusyError.new() unless @queue.size() < @max_queue_count
      end
      @ask_mutex.synchronize {
        @queue.insert(0, Act.new(op, args))
      }
      @loop.wakeup() if RUNNING == @state
    end
def timeout_ask(timeout, op, *args)
      unless @max_queue_count.nil? || 0 == @max_queue_count || @queue.size() < @max_queue_count
        @ask_thread = Thread.current
        sleep(timeout) unless timeout.nil?
        @ask_thread = nil
        raise BusyError.new() unless @queue.size() < @max_queue_count
      end
      @ask_mutex.synchronize {
        @queue.insert(0, Act.new(op, args))
      }
      @loop.wakeup() if RUNNING == @state
    end
Calls {#ask}() but uses the specified timeout instead of the default
 {#ask_timeout} to determine how long to wait if the Actor's queue is full.
 @param [Fixnum|Float] timeout maximum time to wait trying to add a request to the Actor's queue
 @param [Symbol] op method to queue for the Actor
 @param [Array] args arguments to the op method
 @raise [BusyError] if the request queue does not become available in the timeout specified