def acquire(&callback)
      acq = Proc.new {
        conn = self.find { |conn| conn.available? }
        if not conn.nil? and conn.connected?
          callback.call(conn)
        else
          logger.warn("Failed to acquire available connection, retry after 0.1 second")
          EM.add_timer(0.1, &acq)
        end
      }
      EM.add_timer(0, &acq)
    end
def acquire(&callback)
      acq = Proc.new {
        conn = self.find { |conn| conn.available? }
        if not conn.nil? and conn.connected?
          callback.call(conn)
        else
          logger.warn("Failed to acquire available connection, retry after 0.1 second")
          EM.add_timer(0.1, &acq)
        end
      }
      EM.add_timer(0, &acq)
    end
Acquire available connection

 @see Connection
 @param [Block] callback This block will be called when successfully acquired a connection
 @yieldparam [Connection] connection acquired connection