/// <inheritdoc/>
 protected override TResult Implementation <TResult>(Func <Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken)
 {
     return(LoggingEngine.Implementation(
                action,
                context,
                cancellationToken,
                ExceptionPredicates,
                ResultPredicates <TResult> .None,
                _loggerProvider,
                (logger, ctx, delegateResult) => _logAction(logger, ctx, delegateResult.Exception)
                ));
 }
 /// <inheritdoc/>
 protected override TResult Implementation(Func <Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken)
 {
     return(LoggingEngine.Implementation(
                action,
                context,
                cancellationToken,
                ExceptionPredicates,
                ResultPredicates,
                _loggerProvider,
                _logAction
                ));
 }