{"id":49687,"library":"waiting-queue","title":"waiting-queue","description":"A lightweight concurrency limiter and request queue for Node.js, version 1.0.7. It controls the number of concurrent requests to a processing module, buffering excess requests to prevent overload (e.g., handling user alarm clock requests at the hour). Key features: configurable concurrency, per-request acquire timeout, optional request deduplication via requestId, and promise-based API with fallback to callback. Unlike generic rate limiters, it focuses on queuing with timeout and deduplication.","status":"active","version":"1.0.7","language":"javascript","source_language":"en","source_url":"https://github.com/imcooder/waiting-queue","tags":["javascript","waiting","queue"],"install":[{"cmd":"npm install waiting-queue","lang":"bash","label":"npm"},{"cmd":"yarn add waiting-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add waiting-queue","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"The package exports an object with WaitingQueue property; do not use default import.","wrong":"const WaitingQueue = require('waiting-queue');","symbol":"WaitingQueue","correct":"const { WaitingQueue } = require('waiting-queue');"},{"note":"ESM import must use named import; default import will result in undefined.","wrong":"import WaitingQueue from 'waiting-queue';","symbol":"WaitingQueue","correct":"import { WaitingQueue } from 'waiting-queue';"},{"note":"Instantiate directly; the class is available after import.","wrong":"const queue = new waiting-queue.WaitingQueue({ concurrent: 2 });","symbol":"WaitingQueue","correct":"const queue = new WaitingQueue({ concurrent: 2 });"}],"quickstart":{"code":"const { WaitingQueue } = require('waiting-queue');\n\nconst queue = new WaitingQueue({\n  concurrent: 2,\n  process: (request) => {\n    return new Promise((resolve) => {\n      setTimeout(() => resolve(request.id), 1000);\n    });\n  }\n});\n\nfor (let i = 0; i < 5; i++) {\n  queue.add({ id: i }, { waitTimeout: 5000 })\n    .then(result => console.log(`Request ${i} finished:`, result))\n    .catch(err => console.error(`Request ${i} error:`, err.message));\n}","lang":"javascript","description":"Creates a waiting queue with concurrency 2, adds 5 requests, logs results or errors."},"warnings":[{"fix":"Provide process function either globally or per-request, not both to avoid confusion.","message":"If request.process is provided, it overrides the global opt.process passed to constructor.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure requestId is unique per logical operation; avoid reusing IDs for simultaneous requests.","message":"The requestId option for deduplication only works after a request completes or fails; in-flight requests with same ID are not deduplicated.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Set waitTimeout appropriately based on expected queue wait time; default is 5000ms.","message":"The waitTimeout is applied per request from the time it enters the queue. If queue is long, early requests may timeout before processing.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.0.7':14 'acquir':48 'alarm':35 'api':59 'base':58 'buffer':26 'callback':63 'clock':36 'concurr':6,20,44 'configur':43 'control':16 'dedupl':52,75 'e.g':32 'excess':27 'fallback':61 'featur':42 'focus':69 'generic':65 'handl':33 'hour':40 'javascript':76 'key':41 'lightweight':5 'limit':7,67 'modul':25 'node.js':12 'number':18 'option':50 'overload':31 'per':46 'per-request':45 'prevent':30 'process':24 'promis':57 'promise-bas':56 'queu':71 'queue':3,10,78 'rate':66 'request':9,21,28,37,47,51 'requestid':54 'timeout':49,73 'unlik':64 'user':34 'version':13 'via':53 'wait':2,77 'waiting-queu':1","created_at":"2026-06-07T17:03:05.648161+00:00","updated_at":"2026-06-07T17:03:05.648161+00:00","problems":[],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/imcooder/waiting-queue#readme","github":"https://github.com/imcooder/waiting-queue","docs":null,"changelog":null,"pypi":null,"npm":"waiting-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}