Perform a snapshot while taking out a mutex to avoid concurrent calls.
@visibleForTesting Future<DateTime> mutexSnapshot() async { return _snapshotLock.synchronized(() { return performSnapshot(); }); }