def _alert(self, msg: str) -> None:
         pass
 
-    def send(self, verb: str, *args) -> IrcMessage:
+    def send(self, verb: str, *args) -> Optional[IrcMessage]:
         'Send msg over socket, on success log .raw.'
         if not self.conn:
             raise SendFail('cannot send, connection seems closed')
 
 
     def privmsg(self, chat_target: str, msg: str) -> None:
         'Catch /privmsg, only allow for channel if in channel, else complain.'
-        try:
-            if self.db.is_chan_name(chat_target)\
-                    and chat_target not in self.db.channels.keys():
-                raise SendFail('not sending, since not in channel')
-            self.send('PRIVMSG', chat_target, msg)
-        except SendFail as e:
-            self._tui_alert_trigger(f'{e}')
-        else:
+        if self.db.is_chan_name(chat_target)\
+                and chat_target not in self.db.channels.keys():
+            self._tui_alert_trigger('not sending, since not in channel')
+        elif self.send('PRIVMSG', chat_target, msg):
             self.db.messaging('').to(chat_target).privmsg = msg  # type: ignore
 
     def reconnect(self) -> None:
             return
         self.connect()
 
-    def send(self, verb: str, *args) -> IrcMessage:
-        msg = super().send(verb, *args)
+    def send(self, verb: str, *args) -> Optional[IrcMessage]:
+        try:
+            msg = super().send(verb, *args)
+        except SendFail as e:
+            self._tui_alert_trigger(f'{e}')
+            return None
+        assert msg is not None
         self._log(msg.raw, out=True)
         return msg