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);
        }