def wait_nonblock(method, *args)
      loop do
        result = __send__(method, *args, exception: false)
        case result
          when :wait_readable
            io_watcher.wait_readable
          when :wait_writable
            io_watcher.wait_writable
          else
            return result
        end
      end
    end
def wait_nonblock(method, *args)
      loop do
        result = __send__(method, *args, exception: false)
        case result
          when :wait_readable
            io_watcher.wait_readable
          when :wait_writable
            io_watcher.wait_writable
          else
            return result
        end
      end
    end
wait io nonblock method

 @param [Symbol]  method method name, example: wait_nonblock
 @param [args] args arguments pass to method