public async Task <TResult> HandleAsync(TQuery query, CancellationToken cancellationToken = default)
        {
            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var principal = _securutyPrincipalProvider.GetPrincipal();

            query.SetPrincipal(principal);
            return(await _decoratee.HandleAsync(query, cancellationToken).ConfigureAwait(false));
        }
        public async Task HandleAsync(TCommand command, CancellationToken cancellationToken = default)
        {
            if (command is null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            var principal = _securityPrincipalProvider.GetPrincipal();

            command.SetPrincipal(principal);
            await _decoratee.HandleAsync(command, cancellationToken).ConfigureAwait(false);
        }