It would be great if the update API supported the same versioning parameters as the index API. The failure semantics is a bit more complex; what I would expect would be:
version_type=internal: fail if version on getting the doc does not match the version specified; ignore retry_on_conflict and fail immediately on any conflict (a conflict would mean the version after indexing no longer matches)
version_type=external: fail if version on getting the doc is >= specified version; obey retry_on_conflict while the version in conflict is < the specified version; fail if a retry sees a version >= the version specified.