protected override async Task RunProcess() { if (mode == DeleteBranchMode.ActualBranchOnly) { await AppendProcess(cli.DeleteRemote(deletingBranch)).WaitUntilComplete(); await repository.BranchUpdated(deletingBranch, null, await repository.GetBranchRef(deletingBranch).Take(1)); } else { var details = await repository.GetBranchDetails(deletingBranch).FirstAsync(); using (var unitOfWork = unitOfWorkFactory.CreateUnitOfWork()) { settings.DeleteBranchSettings(deletingBranch, unitOfWork); await unitOfWork.CommitAsync(); } if (mode != DeleteBranchMode.GroupOnly) { foreach (var branch in details.Branches) { await AppendProcess(cli.DeleteRemote(branch.Name)).WaitUntilComplete(); await repository.BranchUpdated(branch.Name, null, await repository.GetBranchRef(branch.Name).Take(1)); } } } }