Si el método asíncrono rechaza, devuelve el valor de respaldo en lugar de
propagar el error. El respaldo puede ser un valor directo o una función
(error, ...argsOriginales) => valor | Promise<valor> (las funciones se
tratan SIEMPRE como proveedor, nunca como valor).
Nota de tipado: las factorías de decoradores fijan sus genéricos antes de
conocer el método decorado, así que el compilador NO puede comprobar solo
que el respaldo case con el tipo de retorno. Pasa el genérico
explícitamente (@Fallback<User[]>([])) para que al menos el valor de
respaldo quede validado; sin genérico se acepta cualquier valor.
Combínalo con @Retry/@Timeout/@CircuitBreaker para completar la cadena
de resiliencia.
Si el método asíncrono rechaza, devuelve el valor de respaldo en lugar de propagar el error. El respaldo puede ser un valor directo o una función
(error, ...argsOriginales) => valor | Promise<valor>(las funciones se tratan SIEMPRE como proveedor, nunca como valor).Nota de tipado: las factorías de decoradores fijan sus genéricos antes de conocer el método decorado, así que el compilador NO puede comprobar solo que el respaldo case con el tipo de retorno. Pasa el genérico explícitamente (
@Fallback<User[]>([])) para que al menos el valor de respaldo quede validado; sin genérico se acepta cualquier valor. Combínalo con @Retry/@Timeout/@CircuitBreaker para completar la cadena de resiliencia.