put method
Keeps the request's document under its slot in place of the copy at CloudPutRequest.replacing, or only if there is no copy at all when that is null.
Implementation
@override
Future<CloudPut> put(CloudPutRequest request) async {
_puts.add(request);
if (unavailable case final String why) return CloudUnavailable(why);
final kept = _copies[request.slot];
if (kept?.version != request.replacing) return const CloudMoved();
final copy = writeElsewhere(request.slot, request.document);
return CloudStored(version: copy.version);
}