example: update
- on start, set optimistic data.
- if complete (success), set real data.
- if error, rollback to previous data.
except when we have multiple concurrent updates:
- keep track of the last real data.
- set any new updates as optimistic data
- only when all updates fail, rollback to previous data.
should probably draw this or something. /cc @pietgeursen