npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

linear-promise-backoff-queue

v1.0.0

Published

Rate limit calls to promise-returning functions with linear backoff.

Downloads

7

Readme

linear-promise-backoff-queue

Rate limit calls to promise-returning functions with linear backoff.

Install

With npm do:

npm install --save linear-promise-backoff-queue

Usage

Create a backoff queue:

var createBackoff = require('linear-promise-backoff-queue')

var backoff = createBackoff({
  increment: 200, // amount of additional `ms` to wait between each call
  max: 2200, // max backoff time between calls
})

Wrap promise-returning functions to use the backoff queue:

var request = backoff(function () {
  // do your API request
})

Use your functions as normal:

// Called immediately
request('/api/hello').then(function () {
  console.log('done 1')
})
// Called after 200ms
request('/api/hello').then(function () {
  console.log('done 2')
})

API

var backoff = createBackoff(opts)

Create a backoff queue. The return value is a function that wraps functions passed to it so they will use this backoff queue. Multiple functions can share the same queue.

opts is an object with possible options:

  • increment - The time in milliseconds to add on top of the delay between function calls. If this is eg. 200, the first call will wait 0ms, the second will wait 200ms, and the third will wait 400ms. When the queue empties, when all waiting functions have been called and the remaining delay has passed, the delay will reset to 0ms.
  • max - The maximum amount of delay between function calls. Once the delay reaches this value, the increment will no longer be added on top each time.
  • Promise - Optional Promise constructor to use. The global Promise is used by default.

var fnB = backoff(fn)

Wrap fn so it will use the backoff queue backoff. fn should return a thenable. When called, fnB will wait for the queue to empty and then call fn, passing through arguments and this. It returns a Promise that resolves with the result of fn.

License

MIT