safeAsync<T> static method
Implementation
static Future<T?> safeAsync<T>(
Future<T> Function() operation, {
String? operationName,
T? fallback,
}) async {
final opName = operationName ?? 'unknown_async_operation';
// Check circuit breaker first
if (ObslyCircuitBreaker.isOpen(opName)) {
ObslyLogger.debug('Circuit breaker open for $opName, returning fallback');
return fallback;
}
try {
ObslyLogger.verbose('🛡️ Executing defensive async operation: $opName');
final result = await operation();
ObslyCircuitBreaker.recordSuccess(opName);
ObslyLogger.verbose('✅ Defensive async operation successful: $opName');
return result;
} catch (e, stack) {
ObslyCircuitBreaker.recordFailure(opName);
// Enhanced error logging with context
ObslyLogger.errorWithContext(
'DefensiveExecution',
'safeAsync',
'Defensive execution caught async error in $opName: $e',
stack,
context: {
'operationName': opName,
'hasFallback': fallback != null,
'fallbackType': fallback?.runtimeType.toString(),
'operationType': 'async',
},
);
return fallback;
}
}