public async Task <UniqueId?> WriteAndUnlockStore(IMailFolder parentFolder, EmailBackedKeyValueStore?kvStore, LockResult activeLock) { if (kvStore == null) { return(UniqueId.Invalid); } try { UniqueId?replacementResult = null; // TBD review locking lock (parentFolder.SyncRoot) { parentFolder.Open(FolderAccess.ReadWrite); logger.Debug("Updating existing storage message in folder {FolderPath} with ID {@ID}", parentFolder.FullName, kvStore.MessageAndId.UniqueId); replacementResult = parentFolder.Replace(kvStore.MessageAndId.UniqueId, kvStore.MessageAndId.Message); parentFolder.SetFlags(kvStore.MessageAndId.UniqueId, MessageFlags.Seen, true); } return(replacementResult); } finally { var unlockResult = await remoteLock.ReleaseLock(parentFolder, activeLock.LockResourceName, activeLock.ResultingLockCookie); if (!unlockResult) { logger.Warning("Could not unlock the following lock: {@LockResult}", activeLock); } } }