diff --git a/include/asterisk/stasis.h b/include/asterisk/stasis.h
index 1d35bf87c9da602c76295e78e02557bb91364d27..9a5f7537c5d7c63c4bd937f245e861be3c78a625 100644
--- a/include/asterisk/stasis.h
+++ b/include/asterisk/stasis.h
@@ -306,9 +306,10 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic,
  * delivery of the final message.
  *
  * \param subscription Subscription to cancel.
+ * \retval NULL for convenience
  * \since 12
  */
-void stasis_unsubscribe(struct stasis_subscription *subscription);
+struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *subscription);
 
 /*!
  * \brief Create a subscription which forwards all messages from one topic to
@@ -450,9 +451,10 @@ struct stasis_caching_topic *stasis_caching_topic_create(struct stasis_topic *or
 /*!
  * Unsubscribes a caching topic from its upstream topic.
  * \param caching_topic Caching topic to unsubscribe
+ * \retval NULL for convenience
  * \since 12
  */
-void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic);
+struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic);
 
 /*!
  * \brief Returns the topic of cached events from a caching topics.
diff --git a/main/stasis.c b/main/stasis.c
index d1f11537ede74f3c7a24c6c0b22879f285e2e627..7f18bf5e17799da7e3db311258a764948214d63e 100644
--- a/main/stasis.c
+++ b/main/stasis.c
@@ -172,7 +172,7 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic, stasis_
 	return __stasis_subscribe(topic, callback, data, 1);
 }
 
-void stasis_unsubscribe(struct stasis_subscription *sub)
+struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *sub)
 {
 	if (sub) {
 		size_t i;
@@ -186,12 +186,13 @@ void stasis_unsubscribe(struct stasis_subscription *sub)
 				topic->subscribers[i] = topic->subscribers[--topic->num_subscribers_current];
 				/* Unsubscribing unrefs the subscription */
 				ao2_cleanup(sub);
-				return;
+				return NULL;
 			}
 		}
 
 		ast_log(LOG_ERROR, "Internal error: subscription has invalid topic\n");
 	}
+	return NULL;
 }
 
 int stasis_subscription_is_subscribed(const struct stasis_subscription *sub)
diff --git a/main/stasis_cache.c b/main/stasis_cache.c
index f8518ce09d2a5935f50d324fca5feeb78055b159..a82492870446dd5230ba7746556a0cc6ad2a75a3 100644
--- a/main/stasis_cache.c
+++ b/main/stasis_cache.c
@@ -65,7 +65,7 @@ struct stasis_topic *stasis_caching_get_topic(struct stasis_caching_topic *cachi
 	return caching_topic->topic;
 }
 
-void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic)
+struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic)
 {
 	if (caching_topic) {
 		if (stasis_subscription_is_subscribed(caching_topic->sub)) {
@@ -74,6 +74,7 @@ void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic)
 			ast_log(LOG_ERROR, "stasis_caching_topic unsubscribed multiple times\n");
 		}
 	}
+	return NULL;
 }
 
 struct cache_entry {