I haven't seen how we're using this generic framework yet, but I'm not clear on why we need it — since we're reading the version as part of the delete call, it's racy in pretty much the same ways as if we didn't read the version at all.
Right?