superagent-d2l-queue

3.0.5 • Public • Published

Request Queue

NPM version Build status Coverage Status Dependency Status

Extends Superagent by adding the ability to queue up requests and retry failed requests due to timeouts.

Installation

Install from NPM:

npm install superagent-d2l-queue --save

Usage

superagentQueue(options)

const request = require( 'superagent' );
const superagentQueue = require('superagent-d2l-queue');
 
// ...
 
request
    .get( ... )
    .use( superagentQueue( ... ) )
    .end( function( err, res ) {
        // ...
    });

Options (defaults):

All parameters are optional. The backoff parameter does need to include all parameters. Custom parameters will be merged with default parameters.

{
    queue: undefined, // use `superagentQueue.makeQueue()``
    backoff: {
        initialTimeout: 2000, // Initial retry timeout
        maxTimeout: undefined, // Max retry timeout
        expFactor: 1.4 // Exponental backoff factor  (1.4 ^ retryCount)
        retries: 5, // Number of retries, can be null to have infinite retries
        override: function( retryCount ) { // Compute the time between each retry interval.
            return Math.round( initialTimeout *
                Math.pow( backoff.exp.factor, retryCount ) );
        }
    },
    // Enable request retry when a request has timed out.
    retryEnabled: false,
    // Callback function that will be called when a request has timedout and will be retried. This function
    // will not be called if retry is disabled
    retryNotifier: undefined
}

superagentQueue( { queue: superagentQueue.makeQueue() } )

Specify an Array that will be used as a queue to chain multiple Superagent requests. Only one request will execute at a time. This is similar to what can be done with libraries such as Q.

const request = require( 'superagent' );
const superagentQueue = require('superagent-d2l-queue');
 
// ...
 
const queue = superagentQueue.makeQueue();
 
const first = request
    .get( ... )
    .use( superagentQueue( { queue } ) )
    .end( function( err, res ) {
        // ...
    });
 
const second = request
    .get( ... )
    .use( superagentQueue( { queue } ) )
    .end( function( err, res ) {
        // ...
    });
 
const third = request
    .get( ... )
    .use( superagentQueue( { queue } ) )
    .end( function( err, res ) {
        // ...
    });
 
// etc...

Contributing

  1. Fork the repository. Committing directly against this repository is highly discouraged.

    1. Make your modifications in a branch, updating and writing new unit tests as necessary in the spec directory.

      1. Ensure that all tests pass with npm test

      2. Submit a pull request to this repository. Wait for tests to run and someone to chime in.

Code Style

This repository is configured with EditorConfig and ESLint rules.

Readme

Keywords

Package Sidebar

Install

npm i superagent-d2l-queue

Weekly Downloads

55

Version

3.0.5

License

Apache-2.0

Last publish

Collaborators

  • d2l-travis-deploy