def send_to(destination)
      rc = Zmsg.send(ffi_delegate, destination)
      return if rc == 0
      raise_zmq_err
    rescue Errno::EAGAIN
      raise IO::EAGAINWaitWritable
    end
def send_to(destination)
      rc = Zmsg.send(ffi_delegate, destination)
      return if rc == 0
      raise_zmq_err
    rescue Errno::EAGAIN
      raise IO::EAGAINWaitWritable
    end
Send {Message} to a {Socket} or {Actor}.

 @note Do NOT use this {Message} anymore afterwards. Its native
   counterpart will have been destroyed.

 @param destination [Socket, Actor] where to send this message to
 @return [void]

 @raise [IO::EAGAINWaitWritable] if the send timeout has been reached
   (see {ZsockOptions::OptionsAccessor#sndtimeo=})
 @raise [SocketError] if the message can't be routed to the destination
   (either if ROUTER_MANDATORY flag is set on a {Socket::ROUTER} socket
   and the peer isn't connected or its SNDHWM is reached (see
   {ZsockOptions::OptionsAccessor#router_mandatory=}, or if it's
   a {Socket::SERVER} socket and there's no connected CLIENT
   corresponding
   to the given routing ID)
 @raise [ArgumentError] if the message is invalid, e.g. when trying to
   send a multi-part message over a CLIENT/SERVER socket
 @raise [SystemCallError] for any other error code set after +zmsg_send+
   returns with failure. Please report as bug.