# promisify-call

> Promisify a function call so users can call a function with a callback or get a promise

Latest version **2.0.4** (published 2017-01-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install promisify-call
pnpm add promisify-call
yarn add promisify-call
bun add promisify-call
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.4 |
| Published | 2017-01-16 |
| First published | 2016-08-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4.0 |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Bojan Djurkovic |
| Maintainers | bojand |
| Keywords | promise, callback, promisify |

## Links

- npm: https://www.npmjs.com/package/promisify-call
- Repository: https://github.com/bojand/promisify-call
- Homepage: https://github.com/bojand/promisify-call#readme
- Issues: https://github.com/bojand/promisify-call/issues
- npm.io page: https://npm.io/package/promisify-call

## Dependencies (1)

- [with-callback](https://npm.io/package/with-callback.md) ^1.0.2

## 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

- 2.0.4 (latest) — 2017-01-16
- 2.0.3 — 2017-01-03
- 2.0.2 — 2016-12-29
- 2.0.1 — 2016-12-29
- 2.0.0 — 2016-12-14
- 1.0.0 — 2016-08-11

## README

# promisify-call

[![npm version](https://img.shields.io/npm/v/promisify-call.svg?style=flat-square)](https://www.npmjs.com/package/promisify-call)
[![build status](https://img.shields.io/travis/bojand/promisify-call/master.svg?style=flat-square)](https://travis-ci.org/bojand/promisify-call)

Promisify a function call so users can call a function with a callback or get a promise.
* **2.0** works only with native `Promise` so requires Node >= 4.0.
* **1.0** uses [Bluebird](www.bluebirdjs.com) and should work with older Node.js

## Installation

`npm install promisify-call`

## Usage

```js
function _uppercase(param, fn) {
  setTimeout(() => {
    return fn(null, param.toUpperCase());
  }, 50);
}

function uppercase(param, fn) {
  return promisifyCall(this, _uppercase, ...arguments);
}

// now we can call it using callback-style
uppercase('foo', (err, res) => {
  console.log(res); // FOO
});

// OR promise style
const res = await uppercase('foo');
console.log(res); // FOO
```

## API Reference

<a name="promisifyCall"></a>

### promisifyCall(ctx, fn, args) ⇒ <code>undefined</code> &#124; <code>\*</code> &#124; <code>Promise</code>
Promisifies the call to <code>fn</code> if appropriate given the arguments.
Calls the function <code>fn</code> either using callback style if last argument is a function.
If last argument is not a function, <code>fn</code> is called returning a promise.
This lets you create API that can be called in either fashions.

**Kind**: global function  
**Returns**: <code>undefined</code> &#124; <code>\*</code> &#124; <code>Promise</code> - Promise if promisified  

| Param | Type | Description |
| --- | --- | --- |
| ctx | <code>Object</code> | context / this |
| fn | <code>function</code> | The function to call |
| args | <code>arguments</code> | Arguments |

## License

Copyright 2015 Bojan D.

Licensed under the MIT License.

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