replay method
Sends queued mutations to remote, in order.
Two calls at once share one run: a reconnect that fires twice must not send the log twice.
Implementation
Future<DVReplayResult> replay(DVOfflineRemote remote) {
return _replaying ??=
_replay(remote).whenComplete(() => _replaying = null);
}