I have implemented (or managed a team that implemented) this concept four separate times as an internal library somewhere. Each one included slightly different affordances and addressed a few different concerns that stem from the domain that it was built for.
Props for extracting it and offering it up as a library. I'll be interested to compare it to the implementations I've seen, and see what you've added that I've not seen before.