public async Task Call_WithValidParameters_LogTiming()
        {
            var command = new SafeCallServiceCommand(
                () => Task.Delay(1000),
                new SafeCallServiceLogMetadata(
                    Guid.NewGuid(),
                    typeof(SafeCallService),
                    "Unit Tests"));

            await this.CallService.Call(command);
        }
        public async Task CallAsync(SafeCallServiceCommand command)
        {
            this.log.ForContext(command.Metadata.Context);

            try
            {
                using (this.log.BeginTimedOperation(command.Metadata.Name, identifier: command.Metadata.CorrelationId.ToString()))
                {
                    await command.Func.Invoke();
                }
            }
            catch (Exception ex)
            {
                this.log.Error(ex, $"Failed {command.Metadata.Context.Name}");
            }
        }