You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

smart-fetch-retry

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

smart-fetch-retry

Una utilidad ligera para realizar peticiones fetch con reintentos automáticos y delay personalizable, compatible con Node.js y navegadores.

1.1.0
latest
Source
npmnpm
Version published
Weekly downloads
134
Maintainers
1
Weekly downloads
 
Created
Source

smart-fetch-retry

Una utilidad ligera para realizar peticiones HTTP con reintentos automáticos y soporte para Node.js y navegadores.
Perfecto para manejar solicitudes poco confiables, como llamadas a APIs externas que pueden fallar temporalmente.

✨ Características

📦 Instalación

npm install smart-fetch-retry

Nota: En Node.js 16+ se requiere instalar node-fetch si no existe soporte nativo de fetch:

npm install node-fetch

🚀 Uso

Ejemplo básico

import { smartFetchRetry } from "smart-fetch-retry";

const url = "https://api.escuelajs.co/api/v1/products";

async function main() {
  try {
    const { promise } = smartFetchRetry(url, { method: "GET" }, 3, 1500, 5000);
    const response = await promise;
    const data = await response.json();
    console.log("Datos recibidos:", data);
  } catch (error) {
    console.error("Error:", error.message);
  }
}

main();

⏱ Timeout automático

El último parámetro define el tiempo máximo (en milisegundos) antes de cancelar automáticamente la petición:

const { promise } = smartFetchRetry("https://api.example.com/data", {}, 3, 1500, 3000);

🛑 Cancelación manual

Puedes cancelar manualmente la petición usando controller.abort():

const { promise, controller } = smartFetchRetry("https://api.example.com/data", {}, 3, 1500, 5000);

promise
  .then(res => res.json())
  .then(data => console.log("Datos:", data))
  .catch(err => console.error("Error:", err.message));

setTimeout(() => {
  controller.abort();
  console.log("Petición cancelada manualmente");
}, 2000);

⚙️ Parámetros

ParámetroTipoPor defectoDescripción
urlstringRequeridoURL de la petición.
optionsobject{}Opciones para fetch (method, headers, body).
retriesnumber3Número de intentos antes de fallar.
delaynumber1000 msTiempo de espera entre cada intento (en ms).
timeoutnumber5000 msTiempo máximo antes de cancelar la petición automáticamente.

🛠 Ejemplo con POST y Headers

const { promise } = smartFetchRetry(
  "https://api.example.com/data",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ name: "John" }),
  },
  5,
  2000
);

const data = await response.json();
console.log(data);

❗ Manejo de errores

Si después de todos los reintentos la solicitud sigue fallando, la función lanza un error:

try {
  const { promise } = smartFetchRetry("https://api.fake.com/fail", {}, 2, 1000);
  await promise;
} catch (err) {
  console.error(err.message); // "Fallo después de 2 intentos: ..."
}

✅ Mejoras implementadas

  • Cancelación con AbortController (implementado en v1.1.0).
  • Soporte para timeout configurable (implementado en v1.1.0).

🧩 Próximas mejoras

  • Retraso exponencial para los reintentos.
  • Tipos para TypeScript.
  • Mejor manejo de logs en entorno de desarrollo.
  • Mejor manejo de errores específicos.

📄 Licencia

MIT © 2025 Miguel Ignacio González

Keywords

fetch

FAQs

Package last updated on 07 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.