Home

resilient-client

A resilience HTTP client. Fail and recover fast. resilient-client is a JavaScript HTTP client that executes requests and monitors their execution status. When request start failing, resilient-client plays dead and fails fast. You can provide function to manage failures. It uses Opossum, a Circuit Breaker and Axios underneath. For more about the Circuit Breaker pattern, there are lots of resources on the web.

Usage

Let's say you've to call an API endpoint. HTTP requests might fail. All requests from resilient-client are perfomed on circuits. Resilient-client can throws HTTP error or Circuit Breaker error. A Circuit Breaker error can open the circuit. When the circuit is open subsequent requests are blocked untils the circuit close again.

const ResilientClient = require("resilient-client");
// import ResilientClient from "resilient-client"; // For ESM modules

const client = new ResilientClient(
    {
        timeout: 10000, // Set Opossum timeout option. If our request takes longer than 3 seconds, trigger a failure
        errorThresholdPercentage: 50, // Set Opossum errorThresholdPercentage option. If 50% of requests fail, open the circuit.
        resetTimeout: 30000, // Set Opossum resetTimeout option. After 30 seconds, try again.
    },
    {
        baseURL: "http://localhost:8000", // The API URL
    }
);

// Performs a GET request at http://localhost:8000/users
client
    .request({ url: "users", method: "get" })
    .then((result) => console.log(result))
    .catch((error) =>
        ResilientClient.isBreakerError(error)
            ? console.error("Circuit breaker error occured: " + error) // The request takes longer than 30 seconds
            : // or 50% of requests fail
              console.error("Http error occured: " + error)
    );

Examples

See examples/ folder for more uses cases.

Documentation

Check out the full documentation here.

Contribution

Contributions are welcome. See CONTRIBUTING.md.