public EitherAsync <Error, TResponse> Handle(TRequest request)
        {
            var logger = Log.ForContext(RootInstance.GetType());

            logger.Debug("Handling request {@Request}", request);
            var result = Decoratee.Handle(request)
                         .Do(_ => logger.Debug("Request handling complete."));

            return(result);
        }
        public EitherAsync <Error, TResponse> Execute(TParam param)
        {
            var logger = Log.ForContext(RootInstance.GetType());

            logger.Debug("Executing query {@QueryParam}", param);
            var result = Decoratee.Execute(param)
                         .Do(_ => logger.Debug("Query execution complete."));

            return(result);
        }