we want to be certain replication is finished before calling `done`, cancel is async so whatever triggers `done` should come from / after the `complete` callback of replications