private async UniTask Open(RequestDialog request)
        {
            Context context = null;

            if (!_contexts.TryGetValue(request.Name, out context))
            {
                var dialogObject = await _factory.Spawn(request.Name);

                context = new Context()
                {
                    Dialog = dialogObject.GetComponent <IDialog>(),
                    Object = dialogObject,
                };
                _contexts.Add(request.Name, context);
            }

            await Open(new Request()
            {
                Dialog = context.Dialog,
                Param  = request.Param,
            });
        }