def wait(timeout = -1)
      ptr = ffi_delegate.wait(timeout)
      if ptr.null?
        raise Interrupt if ffi_delegate.terminated
        return nil
      end
      return socket_by_ptr(ptr)
    end
def wait(timeout = -1)
      ptr = ffi_delegate.wait(timeout)
      if ptr.null?
        raise Interrupt if ffi_delegate.terminated
        return nil
      end
      return socket_by_ptr(ptr)
    end
Waits and returns the first socket that becomes readable.
 @param timeout [Integer] how long to wait in ms, or 0 to avoid
   blocking, or -1 to wait indefinitely
 @return [Socket, Actor] first socket of interest
 @return [nil] if the timeout expired or
 @raise [Interrupt] if the timeout expired or