On second thought I think the api should remain as is, but we should no longer consider the operation to be an update but treat it as a query instead (and depending on ~consistency maybe allow the query to happen on a slave too).
Same for assert_exists below