diff --git a/main/stasis_bridging.c b/main/stasis_bridging.c
index 2ee4fcfc169fff5748c24538d89642072708f91f..49e1fcfdf95f8bc8e10bceae17eb5a3e9708c8b2 100644
--- a/main/stasis_bridging.c
+++ b/main/stasis_bridging.c
@@ -321,15 +321,17 @@ struct ast_json *ast_bridge_snapshot_to_json(const struct ast_bridge_snapshot *s
 
 void ast_stasis_bridging_shutdown(void)
 {
-	STASIS_MESSAGE_TYPE_CLEANUP(ast_bridge_snapshot_type);
-	STASIS_MESSAGE_TYPE_CLEANUP(ast_bridge_merge_message_type);
-	STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_entered_bridge_type);
-	STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_left_bridge_type);
 	ao2_cleanup(bridge_topic_all);
 	bridge_topic_all = NULL;
-	bridge_topic_all_cached = stasis_caching_unsubscribe(bridge_topic_all_cached);
+	bridge_topic_all_cached = stasis_caching_unsubscribe_and_join(
+		bridge_topic_all_cached);
 	ao2_cleanup(bridge_topic_pool);
 	bridge_topic_pool = NULL;
+
+	STASIS_MESSAGE_TYPE_CLEANUP(ast_bridge_snapshot_type);
+	STASIS_MESSAGE_TYPE_CLEANUP(ast_bridge_merge_message_type);
+	STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_entered_bridge_type);
+	STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_left_bridge_type);
 }
 
 /*! \brief snapshot ID getter for caching topic */