# p-from-callback

> Map a callback to a promise

Latest version **4.0.0** (published 2026-06-19) · SEE LICENSE IN LICENSE.md license · 0 weekly downloads

## Install

```sh
npm install p-from-callback
pnpm add p-from-callback
yarn add p-from-callback
bun add p-from-callback
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.0.0 |
| Published | 2026-06-19 |
| First published | 2022-05-16 |
| Weekly downloads | 0 |
| License | SEE LICENSE IN LICENSE.md |
| TypeScript types | bundled |
| Module format | ESM |
| Node | >=22 |
| Dependencies | 0 |
| Unpacked size | 4.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 1 |
| Author | Julian Grinblat |
| Maintainers | perrin4869 |
| Keywords | promises, callbacks |

## Links

- npm: https://www.npmjs.com/package/p-from-callback
- Repository: https://github.com/dotcore64/p-from-callback
- Homepage: https://github.com/dotcore64/p-from-callback#readme
- Issues: https://github.com/dotcore64/p-from-callback/issues
- npm.io page: https://npm.io/package/p-from-callback

## Alternatives

- [@commercetools/sync-actions](https://npm.io/package/@commercetools/sync-actions.md) — 25.1K weekly downloads
- [cwait](https://npm.io/package/cwait.md) — 21.4K weekly downloads
- [@ledgerhq/hw-app-cosmos](https://npm.io/package/@ledgerhq/hw-app-cosmos.md) — 4.2K weekly downloads
- [@financial-times/o-loading](https://npm.io/package/@financial-times/o-loading.md) — 2.8K weekly downloads
- [fa](https://npm.io/package/fa.md) — 185 weekly downloads

## Recent versions

- 4.0.0 (latest) — 2026-06-19
- 3.0.0 — 2025-11-01
- 2.0.0 — 2024-05-01
- 1.0.1 — 2023-02-01
- 1.0.0 — 2022-05-16

## README

# p-from-callback

[![Build Status][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coverage Status][coveralls-badge]][coveralls]

> Map node-style callback to a promise

## Install

```
$ npm install p-from-callback
```

## Features

* pure esm module
* typescript types
* supports multiple return values
* 100% test coverage

## Usage

```js
import { readFile } from 'node:fs';
import fromCallback from 'p-from-callback';

fromCallback(cb => readFile("foo.txt", cb)).then(buf => buf.toString('utf8'));
fromCallback(cb => cb(undefined, "foo", "bar"), true)
    .then([foo, bar] => foo === "foo" && bar === "bar");
```

## API

#### fromCallback\<R\>((cb: (err: unknown, res: R)): unknown): Promise\<R\>
#### fromCallback\<R\>((cb: (err: unknown, ...res: R[])): unknown, true): Promise\<R[]\>

Takes a callback resolver and returns a promise to the resolved value, or array of values when `multi = true`.

## License

See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).

[build-badge]: https://img.shields.io/github/actions/workflow/status/dotcore64/p-from-callback/test.yml?event=push&style=flat-square
[build]: https://github.com/dotcore64/p-from-callback/actions

[npm-badge]: https://img.shields.io/npm/v/p-from-callback.svg?style=flat-square
[npm]: https://www.npmjs.org/package/p-from-callback

[coveralls-badge]: https://img.shields.io/coveralls/dotcore64/p-from-callback/master.svg?style=flat-square
[coveralls]: https://coveralls.io/r/dotcore64/p-from-callback

---
_Source: https://npm.io/package/p-from-callback · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
