Instead of a closure, a function pointer can be hashed and used to
uniquely identify a particular `Subscription`.
This should fix a bug where two different instances of `Subscription`
producing the same output were not treated differently by the runtime,
causing one of them to be ignored.