public async Task <T> AwaitModalAsync <T>(IModalDialog <T> dialog, CancellationToken cancellationToken) { var confirmTask = dialog.ConfirmAsync(cancellationToken); bool addDialogCancelled = true; try { await AddDialogAsync(dialog, cancellationToken); addDialogCancelled = false; NotifyOfPropertyChange(() => AnyOpenDialogs); await confirmTask; } finally { if (!addDialogCancelled) { await RemoveDialogAsync(dialog, CancellationToken.None); } NotifyOfPropertyChange(() => AnyOpenDialogs); } return(await confirmTask); }