class Mysql2::EM::Client

def close(*args)

def close(*args)
  @watch.detach if @watch && @watch.watching?
  super(*args)
end

def query(sql, opts = {})

def query(sql, opts = {})
  if ::EM.reactor_running?
    super(sql, opts.merge(async: true))
    deferable = ::EM::DefaultDeferrable.new
    @watch = ::EM.watch(socket, Watcher, self, deferable)
    @watch.notify_readable = true
    deferable
  else
    super(sql, opts)
  end
end