update is now synchronous and tests pass.
Removed update's upsert functionality as it complicates the return values.