Nurturing Pluto's Martians

    @ambassify/fetch-retried

    2.0.3 • Public • Published

    fetch-retried

    Use the fetch API to run requests, implementing retries

    Installation

    npm install --save @ambassify/fetch-retried

    Usage

    You can use the fetch api as per usual. The only thing different is the source of your fetch method. Here you use fetchRetried to create a fetch method that will use your desired config.

    const fetchRetried = require('@ambassify/fetch-retried');
    const fetch = fetchRetried({ delay: 100 });
    
    fetch('https://www.google.com')
        .then(resp => resp.json())
        .then(json => console.log(json));

    Options

    All options are optional and have default values.

    • delay: When using the default exponential backoff, the delay used to calculate the timeout. Otherwise a method that calculated the timeout used. (default: 200)
    • retries: The number of times to retry a request. (default: 5)
    • isOK: A method that determines whether a request succeeded by returning true or false when passed a response. (default: (resp) => resp.ok)
    • shouldRetryError: When fetch throws an error this method determines whether the request is retried by returning true or false (default: () => true)
    • retryMethods: Which HTTP verbs to retry (default: ['PUT', 'DELETE', 'GET', 'HEAD', 'PATCH', 'OPTIONS'])
    • fetch: The underlying fetch implementation to use. (default: require('node-fetch'))

    Backoff strategies

    Strategies are attached to the default import of this package and can be accessed using.

    const fetchRetried = require('@ambassify/fetch-retried');
    
    fetchRetried.exponential;
    // OR
    fetchRetried.binaryExponential;
    
    // Usage:
    const fetch = fetchRetried({
        delay: fetchRetried.exponential(10)
    })
    // OR
    const fetch = fetchRetried({
        delay: fetchRetried.binaryExponential()
    })

    exponential

    function exponential(delay) {
        return (attempts) => (attempts * attempts) * delay;
    }

    binaryExponential

    function binaryExponential(delay = 1) {
        return (attempts) => (Math.pow(2, attempts) - 1) * delay;
    }

    Contribute

    We really appreciate any contribution you would like to make, so don't hesitate to report issues or submit pull requests.

    License

    This project is released under a MIT license.

    About us

    If you would like to know more about us, be sure to have a look at our website, or our Twitter accounts Ambassify, Sitebase, JorgenEvens

    Install

    npm i @ambassify/fetch-retried

    DownloadsWeekly Downloads

    19

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    18.3 kB

    Total Files

    11

    Last publish

    Collaborators

    • jorgenevens
    • sitebase
    • ambassify