# 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 ### promisifyCall(ctx, fn, args) ⇒ undefined | \* | Promise Promisifies the call to fn if appropriate given the arguments. Calls the function fn either using callback style if last argument is a function. If last argument is not a function, fn is called returning a promise. This lets you create API that can be called in either fashions. **Kind**: global function **Returns**: undefined | \* | Promise - Promise if promisified | Param | Type | Description | | --- | --- | --- | | ctx | Object | context / this | | fn | function | The function to call | | args | arguments | Arguments | ## License Copyright 2015 Bojan D. Licensed under the MIT License.