OperationFailure
Emitted after a failed operation, capturing the triggering error and the execution duration.
Note on double emission with TimeoutTriggered: When a timeout occurs, both TimeoutTriggered and OperationFailure are emitted for the same operation. TimeoutTriggered fires first (immediately before the exception propagates), then OperationFailure fires from the outer wrapper. Consumers building metrics should use TimeoutTriggered to classify timeout failures and avoid counting OperationFailure twice for the same event.