I like the filter mechanism, it's way better cleaner than what I proposed! Kudos!

I will bike-shed that I think we should change the name from "filterFunc" to something more like "shouldDiscardFunc" since then it's unambiguous that returning true means do discard.  Specifically, filterFunc makes me think of Array.filter() which takes a function where returning true keeps something.  (Not that Array.filter's decision there is intuitive, but we are used to it.)