# File lib/tramp/evented_mysql.rb, line 38
  def notify_readable
    log 'readable'
    if item = @current
      @current = nil
      start, response, sql, cblk, eblk = item
      log 'mysql response', Time.now-start, sql
      arg = case response
            when :raw
              result = @mysql.get_result
              @mysql.instance_variable_set('@cur_result', result)
              @mysql
            when :select
              ret = []
              result = @mysql.get_result
              result.each_hash{|h| ret << h }
              log 'mysql result', ret
              ret
            when :update
              result = @mysql.get_result
              @mysql.affected_rows
            when :insert
              result = @mysql.get_result
              @mysql.insert_id
            else
              result = @mysql.get_result
              log 'got a result??', result if result
              nil
            end

      @processing = false
      # result.free if result.is_a? Mysql::Result
      next_query
      cblk.call(arg) if cblk
    else
      log 'readable, but nothing queued?! probably an ERROR state'
      return close
    end
  rescue Mysql::Error => e
    log 'mysql error', e.message
    if e.message =~ /Deadlock/
      @@queue << [response, sql, cblk, eblk]
      @processing = false
      next_query
    elsif DisconnectErrors.include? e.message
      @@queue << [response, sql, cblk, eblk]
      return close
    elsif cb = (eblk || @opts[:on_error])
      cb.call(e)
      @processing = false
      next_query
    else
      raise e
    end
  # ensure
  #   res.free if res.is_a? Mysql::Result
  #   @processing = false
  #   next_query
  end