I left it in for performance. I want to remove the data for the single binding after every ignored value because you never know which thread the binding will be deallocated on, it could be a different one compared to the one where it received / ignored values, but that means it's going to create and destroy the data every single value it receives, so I don't want to do unnecessary work when doing that. Even with multiple bindings the data dictionary would end up empty most of the time.

The data dictionary is just one per thread so even if we leave an empty dictionary around for a while it won't be a problem.