Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

pinky

robotlolita38MITdeprecated1.0.0

Pinky is not actively maintained anymore (bugfixes will still be released). The author moved to working on data.future. If you want Promises/A+, check out bluebird.

Sweetly small promises/a+ implementation.

readme

Pinky

Build Status Dependencies Status

Note: I'm not maintaining this library anymore, since Promises/A+ are broken for me. I recommend using monadic promises and monad combinators instead.

Sweetly small promises/a+ implementation.

Platform support

Should work fine in ES3.

Example

var pinky = require('pinky')

var eventual = pinky()
var eventual2 = eventual.then( function(a){ return a + 1 }
                             , function(a){ return a - 1 })

eventual.fulfill(10)
eventual2.then( console.log.bind(console, 'ok:')
              , console.log.bind(console, 'failed:'))
// => ok: 11

Installing

Just grab it from NPM:

$ npm install pinky

Tests

Tests only run on Node right now, so just:

$ npm test

A note on performance

The promises/a+ specification requires things to be asynchronous. To do that, Pinky uses process.nextTick in Node.js, and setImmediate in a DOM environment. However, setImmediate is a Microsoft thing, and it's unlikely to be implemented anywhere else, and in that case we fall back to the slow setTimeout. Thus, providing a fallback for setImmediate might speed things up a bit.

Documentation

A quick reference of the API can be built using Calliope:

$ npm install -g calliope
$ calliope build

Tests

You can run all tests using Mocha:

$ npm test

Licence

MIT/X11. ie.: do whatever you want.

Why? WHY?

Most promise implementations I've seen plainly do way too much. OTOH Minimal promise implementations (like PinkySwear) provide a terrible API, which really sucks.

So, I wrote Pinky to be a minimal and fast baseline for extensions to promises/a+. Some implementation ideas are taken straight out from avow, btw, but I might revisit this in the future and try to optimise things.