Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Node.js
  3. More…

More…

CC0-1.0

A curated collection of promise utility packages and patterns for solving common asynchronous programming problems in JavaScript.

GitHubGitHub
5.2k stars138 forks0 contributors

What is More…?

promise-fun is a curated collection of JavaScript promise utility packages and patterns created by Sindre Sorhus. It provides a wide array of small, focused modules to solve common asynchronous programming problems such as concurrency control, timing, error handling, and functional composition. The project serves as both a library of ready-to-use tools and a learning resource for effective promise-based development.

Target Audience

JavaScript and Node.js developers who regularly work with promises and async/await and need robust utilities for managing asynchronous operations, concurrency, error handling, and control flow.

Value Proposition

Developers choose promise-fun because it offers a comprehensive, battle-tested set of utilities from a trusted maintainer, eliminating the need to reinvent common asynchronous patterns. Each module is small, focused, and well-documented, promoting code reuse and best practices in asynchronous JavaScript.

Overview

Promise packages, patterns, chat, and tutorials

Use Cases

Best For

  • Limiting concurrency when fetching multiple API endpoints
  • Implementing retry logic with exponential backoff for unreliable operations
  • Debouncing or throttling async functions like search inputs
  • Composing multiple async functions into a reusable pipeline
  • Managing complex asynchronous control flow with conditions and loops
  • Adding timeout or minimum delay guarantees to promises

Not Ideal For

  • Applications with strict bundle size constraints where each additional npm package adds significant overhead
  • Teams preferring a single, integrated async utility library to avoid managing dozens of micro-dependencies
  • Projects already built around reactive programming paradigms like RxJS that handle async flows differently

Pros & Cons

Pros

Comprehensive Utility Coverage

With over 40 specialized packages like p-map for concurrency and p-retry for error handling, it addresses nearly every common promise pattern, reducing the need to reinvent the wheel.

Small, Focused Modules

Each package solves a specific problem without bloat, such as p-limit for concurrency limits and delay for precise timing, promoting code reusability and simplicity.

Trusted Maintainer Quality

Created by Sindre Sorhus, a renowned open-source contributor, ensuring high reliability and adherence to best practices in asynchronous JavaScript.

Practical Documentation and Examples

The FAQ includes real-world scenarios, like using p-map to fetch 100 URLs with a concurrency limit of 5, providing actionable guidance for developers.

Cons

Fragmented Dependency Management

As a collection of separate npm packages, developers must install and update each utility individually, increasing maintenance complexity and potential version conflicts.

Closed to Community Contributions

The README explicitly states 'Not accepting additions,' limiting the ecosystem's growth and potential for addressing niche use cases through external input.

Includes Legacy Patterns

Some packages like p-catch-if are based on .then/.catch chains, which the README advises avoiding, indicating they may not align with modern async/await best practices and could introduce complexity.

Frequently Asked Questions

Quick Stats

Stars5,156
Forks138
Contributors0
Open Issues0
Last commit2 years ago
CreatedSince 2016

Tags

#functional-programming#async-await#ponyfill#async-functions#promises#nodejs#utility-library#error-handling#javascript#concurrency#promise-library#promise#unicorns#promise-modules

Built With

J
JavaScript
N
Node.js

Included in

Node.js65.5kPromises1.7k
Auto-fetched 18 hours ago

Related Projects

Promise anti-patternsPromise anti-patterns

:bird: :zap: Bluebird is a full featured promise library with unmatched performance.

Stars20,514
Forks2,313
Last commit1 year ago
Highland.jsHighland.js

High-level streams library for Node.js and the browser

Stars3,434
Forks146
Last commit6 years ago
pifypify

Promisify a callback-style function

Stars1,505
Forks73
Last commit1 day ago
p-mapp-map

Map over promises concurrently

Stars1,504
Forks74
Last commit4 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub