Async function remove_cog not awaited
If you take a look at this line
https://github.com/python-discord/bot/blob/71fbd5aa7ef8fdf3547dbae845cf7e6b9bc08277/bot/exts/moderation/watchchannels/_watchchannel.py#L131

You'll see that the remove_cog async func isn't awaited.
diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py
index 842aab38..b4e7a33f 100644
--- a/bot/exts/filters/antispam.py
+++ b/bot/exts/filters/antispam.py
@@ -156,7 +156,7 @@ class AntiSpam(Cog):
                 colour=Colour.red()
             )
 
-            self.bot.remove_cog(self.__class__.__name__)
+            await self.bot.remove_cog(self.__class__.__name__)
             return
 
     @Cog.listener()
diff --git a/bot/exts/help_channels/_cog.py b/bot/exts/help_channels/_cog.py
index f1351013..31a33f8a 100644
--- a/bot/exts/help_channels/_cog.py
+++ b/bot/exts/help_channels/_cog.py
@@ -315,7 +315,7 @@ class HelpChannels(commands.Cog):
             )
         except discord.HTTPException:
             log.exception("Failed to get a category; cog will be removed")
-            self.bot.remove_cog(self.qualified_name)
+            await self.bot.remove_cog(self.qualified_name)
 
     async def cog_load(self) -> None:
         """Initialise the help channel system."""
diff --git a/bot/exts/moderation/watchchannels/_watchchannel.py b/bot/exts/moderation/watchchannels/_watchchannel.py
index 46f9c296..6eaedf6b 100644
--- a/bot/exts/moderation/watchchannels/_watchchannel.py
+++ b/bot/exts/moderation/watchchannels/_watchchannel.py
@@ -128,7 +128,7 @@ class WatchChannel(metaclass=CogABCMeta):
                 colour=Color.red()
             )
 
-            self.bot.remove_cog(self.__class__.__name__)
+            await self.bot.remove_cog(self.__class__.__name__)
             return
 
         if not await self.fetch_user_cache():
['bot/exts/moderation/watchchannels/_watchchannel.py', 'bot/exts/filters/antispam.py', 'bot/exts/help_channels/_cog.py']