Tu bucle de reintentos asume que la primera petición falló. Probablemente no lo hizo.
Un timeout o un crash no significan que tu petición a la API se haya perdido. Aquí te explicamos cómo las idempotency keys hacen seguros los reintentos, y el patrón de almacenamiento que realmente previene duplicados.
Tu servicio se cae a mitad de una petición . El cliente ve un timeout y reintenta. Ahora tienes dos cargos. El cliente está enfadado. La base de datos es…