@coderevivehq/inflight
v1.1.0
Published
Coalesce callback-style async work by key with cancellation and timeouts
Readme
Overview
inflight coalesces callback-style asynchronous work by key. The first caller receives a resolver function; later callers for the same key join the pending operation and receive the same result when that resolver runs. This continuation adds explicit cancellation and opt-in timeouts so callers can release retained callbacks when work does not settle.
New promise-based code should generally use native promise coordination or a maintained cache with asynchronous fetching. This package exists for callback-based integrations that need the established inflight(key, callback) contract while they migrate.
Maintained by CodeRevive
This maintained continuation is published by CodeRevive. Security patches are our highest priority. We also review bug reports, feature requests, and suggestions from the community.
The project is based on the original inflight repository by Isaac Z. Schlueter and its contributors.
Quick links
- Overview
- Maintained by CodeRevive
- Installation & setup
- Documentation
- Usage
- Contributing
- Security & support
- Credits & license
Installation & setup
npm install @coderevivehq/inflightThe package uses CommonJS and supports Node.js 14.16 or later.
Documentation
Detailed documentation is maintained with the source code in the docs/ directory. Start with the documentation overview, then read the Usage guide and API reference.
Usage
var fs = require('fs')
var inflight = require('@coderevivehq/inflight')
function load (key, callback) {
var resolve = inflight(key, callback, { timeout: 30000 })
if (!resolve) return
fs.readFile(key, resolve)
}Only the first call for a key starts the underlying operation. Set a timeout or call resolve.cancel() when the operation cannot complete so queued callbacks are not retained indefinitely. See the Usage guide for complete examples.
Contributing
Bug reports, focused improvements, and documentation updates are welcome through GitHub issues and pull requests. Please run npm test before submitting a change.
Security & support
Report security concerns privately through the repository's Security page. For usage questions and ordinary bugs, open a GitHub issue with a minimal reproduction when possible.
Credits & license
This project is a maintained continuation of the original inflight repository. Original code and inherited files remain licensed under the upstream ISC License. CodeRevive-authored changes are licensed under the MIT License in LICENSE-CODEREVIVE, unless a file states otherwise. Using the combined repository remains subject to all applicable license terms.
The original copyright notice for Isaac Z. Schlueter is retained in LICENSE.
