Skip to Content
v1.5Official documentation for the LX CloudPos API · stable in production
v1.5 (current)ErrorsRetry strategies

Retry strategies

The API responds with transient codes (429, 5xx) and permanent ones (4xx except 429). Only the transient codes and network errors are worth retrying, always with exponential backoff and jitter.

Quick decision

function shouldRetry(err) { if (!err.response) return true; // network error const status = err.response.status; if (status === 429) return true; if (status >= 500 && status < 600) return true; return false; }

Exponential backoff with jitter

const backoffMs = (intento) => { const base = Math.min(1000 * Math.pow(2, intento), 30000); const jitter = Math.random() * 1000; return base + jitter; };

Complete pattern

async function callWithRetry(fn, maxRetries = 5) { for (let i = 0; i < maxRetries; i++) { try { return await fn(); } catch (err) { if (!shouldRetry(err) || i === maxRetries - 1) throw err; // If there's a Retry-After, respect it const retryAfter = err.response?.headers['retry-after']; const waitMs = retryAfter ? parseInt(retryAfter) * 1000 : backoffMs(i); await sleep(waitMs); } } }