Killing specific queries that depend on a range that a secondary has been notified is being deleted requires (1) identifying CollectionMetadata instances that have a chunk overlapping it, and (2) invalidating queries that have a ScopedCollectionMetadata that refers to one such instance. For (2), it suffices to provide op== / op!= on ScopedCollectionMetadata.
Assumption is that most running queries on a collection will seem to depend on any given chunk being removed, and the majority of those will be expected to die, so a scan of all such running queries for each such event is more economical than keeping a list of queries that depend on each CollectionMetadata.