elif isinstance(event, DisconnectedEvent):
             self.close()
         elif isinstance(event, SendEvent):
+            self.broadcast_conn(LogConnEvent, f'->: {event.payload.raw}')
             self._write_line(event.payload.raw)
 
 
     'Loop receiving and translating socket messages towards main loop.'
 
     def _send(self, verb: str, parameters: tuple[str, ...]) -> None:
-        msg = IrcMessage(verb, parameters)
-        self.broadcast_conn(LogConnEvent, f'->: {msg.raw}')
-        self.broadcast_conn(SendEvent, msg)
+        self.broadcast_conn(SendEvent, IrcMessage(verb, parameters))
 
     def process_main(self, event: Event) -> bool:
         if not super().process_main(event):