Since @laanwj doesn’t want to maintain these changes anymore, I will.
This PR is a revival of #8843. I have addressed @jnewbery’s comments.
Regarding atomicity, I don’t think that is a concern here. This is explicitly a new API and those who use it will know that this is different and that it is not atomic.