Control de solicitudes (AbortSignal)
Cancela solicitudes HTTP en curso usando AbortSignal en cualquier método del SDK.
Todos los métodos del SDK aceptan un parámetro opcional options de tipo RequestOptions. Actualmente soporta la propiedad signal para pasar un AbortSignal y cancelar la solicitud.
Firma de RequestOptions
interface RequestOptions {
signal?: AbortSignal;
}Cancelar una solicitud
const controller = new AbortController();
// Cancelar después de 3 segundos
setTimeout(() => controller.abort(), 3000);
try {
const response = await factus.bills.list(
{ filter: { status: "1" } },
{ signal: controller.signal },
);
console.log(response.data.data);
} catch (error) {
if (error.name === "AbortError") {
console.log("Solicitud cancelada");
}
}Timeout con AbortSignal.timeout
Los entornos modernos de Node.js (≥ 18) y navegadores soportan AbortSignal.timeout() directamente:
// Cancela automáticamente si la respuesta tarda más de 5 s
const response = await factus.bills.get("SETP990000001", {
signal: AbortSignal.timeout(5000),
});AbortSignal.timeout() está disponible en Node.js 18+ y en navegadores
modernos. Para entornos más antiguos usa AbortController con setTimeout
como en el ejemplo anterior.
Usar con listAll()
Puedes pasar el signal al iterador listAll() para cancelar la paginación en cualquier página intermedia:
const controller = new AbortController();
setTimeout(() => controller.abort(), 10000);
for await (const bill of factus.bills.listAll({}, { signal: controller.signal })) {
process(bill);
}El iterador se detendrá y lanzará AbortError en cuanto la señal sea abortada.
Compatibilidad
El soporte de AbortSignal está disponible en todos los métodos de los módulos:
bills, creditNotes, supportDocuments, adjustmentNotes, reception,
numberingRanges, company, subscription y catalog.