diff --git a/maestro/subscription_registry.c b/maestro/subscription_registry.c
index e7d4c5eb039ffd65871e276779a42bd8c10750f8..5320959fca095e72948c6789378d257296f16005 100644
--- a/maestro/subscription_registry.c
+++ b/maestro/subscription_registry.c
@@ -727,6 +727,11 @@ mstro_subscription__destroy(mstro_subscription subscription)
         ERR("Failed to auto-acknowledge outstanding events: %d (%s)\n",
             s, mstro_status_description(s));
       }
+      s = mstro_pool_event_dispose(subscription->event_list);
+      if(s!=MSTRO_OK) {
+        ERR("Failed to auto-dispose outstanding events: %d (%s)\n",
+            s, mstro_status_description(s));
+      }
     }
 
     WARN("Destroying subscription, but not terminating waiters, FIXME\n");
@@ -2113,6 +2118,7 @@ mstro_pool_event_consume(const Mstro__Pool__Event *eventmsg)
         }
       } else {
         ERR("Event notification does not match a locally known subscription\n");
+        mstro_pool_event_dispose(ev);
         status = MSTRO_FAIL;
       }
     });