{"_id":"micropromise","_rev":"70-a008cf50c09eb5ea25c91f49cc23b50f","name":"micropromise","description":"A+ promises","dist-tags":{"latest":"0.4.10"},"versions":{"0.3.0":{"name":"micropromise","version":"0.3.0","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microTask":"git://github.com/kaerus-component/microTask.git#0.1.1"},"devDependencies":{"promises-aplus-tests":">=1.0.0","phantomjs":"*","mocha":"*","chai":"*","mocha-phantomjs":">=3.1.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","_id":"micropromise@0.3.0","dist":{"shasum":"15a09fe1fba3d92a8b252aa4caa4ba9110fb8446","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.3.0.tgz","integrity":"sha512-QIa2n0x5l+YKW9xcEUc9bGk8imhrdLAW3KRWplc5MoizuwCOQbzPI2A/yjyfnUT5fX9LXSFtYlTkCH7rjfhK8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDhZA4NjSZQh8Yv5EVNQTgLeYsr9OZsio5W9t4HGM1q2AiEAi5J3eLCWQ8BYRdVcmsu79dAV0ea9jnVx/WSC/ziX8lQ="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}],"directories":{}},"0.3.3":{"name":"micropromise","version":"0.3.3","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"*"},"devDependencies":{"promises-aplus-tests":">=1.0.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","_id":"micropromise@0.3.3","dist":{"shasum":"24dbdf9733e5c736640fcd5dbebe897657f73689","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.3.3.tgz","integrity":"sha512-abT6eCAVvlWYSmyEp0Q9U0E8PfF1+c9EmLrAaDb0NvW4odjuwJwZ6iJI/ROpOu4UG2PqKfZkDgEKkXN8GAaeMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFm5/ZbmKQ8HQyqEMFldfvu0Jmw/l+UFBynLXCKA4T6gAiEAuY+JFBmfJ2pdmQX9pA/5EtXEjIxGlUxnivVeZmrSWf8="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.3.5":{"name":"micropromise","version":"0.3.5","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"*"},"devDependencies":{"promises-aplus-tests":">=1.0.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","_id":"micropromise@0.3.5","dist":{"shasum":"ff5efce021bd92207d20929546e17e046fd47009","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.3.5.tgz","integrity":"sha512-Hij6ucFeYCe0MyF8yN4bKOMqccS3phdwOW9d4oqitkxqlyFMaGvhS0lhmnXKl/pavcNHDkIJjmc+BC6n0swA8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASMRxCTk8jxtxURWqgWrYoTMZvNUpQamVzmT5tzRUEdAiBehGRxEcIDS3SoB86ncQAmYqgxcNFfbwFNYIjXg9EonQ=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.0":{"name":"micropromise","version":"0.4.0","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.0","dist":{"shasum":"e09f6df66259c2f73c621e57b6c5f8373a285835","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.0.tgz","integrity":"sha512-0ya7Hq2TUyXGOCoN6UiEDcO775IveJek26L1rqKbD70VOtKLyqIq7OOcX1F8a+eS8nJXf7KBIV6Ni4zlQsv7Ng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCrPWZ24EvNbpH4T/FwPnveyxzWFfl9S/KedJanRD5XAiEAnKYkO4P9EM5KPWay4qk3xzSpzxLKLE11RJbzLytPnys="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.1":{"name":"micropromise","version":"0.4.1","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.1","dist":{"shasum":"2a6b27be8f65db85ff00aadb5fc8f8bf3d1c94ed","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.1.tgz","integrity":"sha512-1A4hoDgdInALEqgnEF1eipe6g09forNIK+FQF6CcNhmnj4K7fmCmGMW6nlYC8NJyeylkzg4SCMqAtNso1EjBng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHL4+YAAZd5DDPnFmrlAyCIKr0G1c88a/rLTK9pQaY8WAiBwUVM6BMzB9o7pDrKwasxx1tHexkxoisIUGPrLKH8Fuw=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.2":{"name":"micropromise","version":"0.4.2","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Kaerus","email":"contact@kaerus.com","url":"http://kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.2","dist":{"shasum":"0f34ad5ce2a7214cf4223ec46a822d4194188e32","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.2.tgz","integrity":"sha512-KBSnVpfiyaO8NnuxNKIYMzIAJaBOyH6pTGzgybKntzM14uQQqnDHwHE/Uh41+nF1YfKI9n92X8d0fg2sP1btmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzt01zL8QEKR8VVwc0PJf+d8zAaH5nxHhXvznbtJxv5AiEAzC9C3AdDt+3/xNL7vG8Lw0rGkgtgSmcvKFcsq7ws2vA="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.5":{"name":"micropromise","version":"0.4.5","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","benchmark":">=1.0.0","test-support":"~0.3"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.5","dist":{"shasum":"05a9e799717a384a1ce7ddf021300b950f7a27e5","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.5.tgz","integrity":"sha512-Ho3E1yvfVfQuRuWGFL6KQoo4SF/vm4o8M2XqybrU702vTy8ONDE5KSxlKpucXmyiWmkTrj+bxujZijnAyI7O1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUEcCrrPiyhJo4ISWebEpDA7JAgY/oMpsRlAT4U+yiSgIhAIBme7LRgmdUnE4AbWieKCFTizB5xSz4C+6MwfG4Jf8N"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.6":{"name":"micropromise","version":"0.4.6","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","mocha":"*","chai":"*","should":"*","component":"~0.9.0","karma":"*","karma-mocha":"*","karma-chai":"*","karma-spec-reporter":"*","karma-firefox-launcher":"*","karma-chrome-launcher":"*"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.6","dist":{"shasum":"91628d56a21d365060b0a4493100234f3131fa0a","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.6.tgz","integrity":"sha512-fCcg4q9njDBqXnEEBUyZ4pqGU85ZgxdskUYQv69CiKbb1oKTmVn4vCAdoeFNBpcVCvvWYiLtDRE3KLw7Q1id4w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEO0sKRM5+iNSdNYmpPROGq2+7X48MQXA99RzRWBlxdAiACPEzsKSyVaD4WZLBhq8gqi3gMFOe1jSpeRoCCzysTjw=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.7":{"name":"micropromise","version":"0.4.7","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.6"},"devDependencies":{"promises-aplus-tests":"2.1.0","mocha":"*","chai":"*","should":"*","component":"~0.9.0","karma":"*","karma-mocha":"*","karma-chai":"*","karma-spec-reporter":"*","karma-firefox-launcher":"*","karma-chrome-launcher":"*"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.7","dist":{"shasum":"30adbcc05e492923ffb2ae1606fe9b5ee3804a60","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.7.tgz","integrity":"sha512-QR8Z9/effci72mKMuYjn6CsIeiOcssv1ura0+Usd7P86EfHhbxXnaF+4XlaEXWMUBGDSRRp93oAsaERnC8quQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClsz5Pl0gSCJr9YETh1ohNbcX3abCb1TxPY0l7dLLORQIhAOj5UFWm6FzNuIWV4WBh8BKk6nPVib0xfdNuN8Rn7Tu+"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}]},"0.4.8":{"name":"micropromise","version":"0.4.8","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.7"},"devDependencies":{"promises-aplus-tests":"2.1.0","mocha":"*","chai":"*","should":"*","component":"~0.9.0","karma":"*","karma-mocha":"*","karma-chai":"*","karma-spec-reporter":"*","karma-firefox-launcher":"*","karma-chrome-launcher":"*"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","gitHead":"4eef9782fb42f4c1a2c6be89baa6a69ba7fc0d10","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.8","_shasum":"eddfff06638b013807d85a2582d60717c04bdb59","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}],"dist":{"shasum":"eddfff06638b013807d85a2582d60717c04bdb59","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.8.tgz","integrity":"sha512-GI37JrwegV+nxnBNf5W1+ybmrZQOM4qXnOEGfj/Zg8S8A+bgRAj5iurYO/2l/+Gre3veKYXDrj4nD7PlvgClcg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBxMAuP22x1TXA+gZQXhcBk+3UOGx9tUrX9KY9s2OgRAiBritllca5oYagNV/CrMUuRvd7P7V9iuiMO1EJhKMhy8g=="}]}},"0.4.9":{"name":"micropromise","version":"0.4.9","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.8"},"devDependencies":{"promises-aplus-tests":"2.1.0","mocha":"*","chai":"*","should":"*","component":"~0.9.0","karma":"*","karma-mocha":"*","karma-chai":"*","karma-spec-reporter":"*","karma-firefox-launcher":"*","karma-chrome-launcher":"*"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","gitHead":"7e1d96d61281ceee889dcff5aa245fe87253add5","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.9","_shasum":"3174de5e81d12cd3409f65e294bfdd78bac94be9","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}],"dist":{"shasum":"3174de5e81d12cd3409f65e294bfdd78bac94be9","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.9.tgz","integrity":"sha512-XtIp6QzrV0s5w1bGVBNOj3g1Qs5x2G71KT0eQFB6eqLJl1/uTftMr8OGukDFoUkxtBEK9+gopDLHOaQmJdozKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFTD559X9AueDbVHS3nbYeNOjYUraNxLl5xneltdKwdAiBTUM3km9TH197DSq7OET5hG5wXPgridVYZizMI2ZPFsA=="}]}},"0.4.10":{"name":"micropromise","version":"0.4.10","description":"A+ promises","implements":["Promises/A+ 1.1.0"],"keywords":["promise","future","promises-aplus"],"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"dependencies":{"microtask":"0.1.9"},"devDependencies":{"promises-aplus-tests":"2.1.0","mocha":"*","chai":"*","should":"*","component":"~0.9.0","karma":"*","karma-mocha":"*","karma-chai":"*","karma-spec-reporter":"*","karma-firefox-launcher":"*","karma-chrome-launcher":"*"},"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"scripts":{"test":"make test"},"main":"index.js","license":"APACHE2_0","gitHead":"2c70cf5c539f4fc8e660a1f4f8d376d17dc4532e","homepage":"https://github.com/kaerus-component/uP","_id":"micropromise@0.4.10","_shasum":"b187237045f6f0fd98442640b0c488f795a0d203","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"kaerus","email":"anders@kaerus.com"},"maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}],"dist":{"shasum":"b187237045f6f0fd98442640b0c488f795a0d203","tarball":"https://registry.npmjs.org/micropromise/-/micropromise-0.4.10.tgz","integrity":"sha512-at9jpJ/NU0mrkqGeifIg+sEcmJb9F7MnLUc2Ck35bSRTmg7thA2Ock63e21VxOs6OWm0UBPQPI40wz5h9TsaDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2kFGXZozHeKCvd3bS5Zvkz5Hcnfd4EgyxrpHZQqHusAiEAit0JP9QA2aYAMicZM8g5mTND7PU+mEOTwzslYX4QHpw="}]}}},"readme":"<a href=\"http://promises-aplus.github.com/promises-spec\">\n    <img src=\"http://promises-aplus.github.io/promises-spec/assets/logo-small.png\"\n         align=\"right\" alt=\"Promises/A+ logo\" />\n</a>\n[![Build Status](https://travis-ci.org/kaerus-component/uP.png)](https://travis-ci.org/kaerus-component/uP)\n\n# microPromise(uP) - A+ v1.1 compliant promises\n\n  - [Promise()](#promisemixinobjectresolverfunction)\n  - [Promise.resolver()](#promiseresolverresolverfunction)\n  - [Promise.thenable()](#promisethenablepobject)\n  - [Promise.wrap()](#promisewrapclassfunctioninstanceobject)\n  - [Promise.defer()](#promisedeferfunctionargs)\n  - [Promise.async()](#promiseasyncfunctionfunctioncallbackfunction)\n  - [Promise.isPending()](#promiseispending)\n  - [Promise.isFulfilled()](#promiseisfulfilled)\n  - [Promise.isRejected()](#promiseisrejected)\n  - [Promise.hasResolved()](#promisehasresolved)\n  - [Promise.valueOf()](#promisevalueof)\n  - [Promise.reason()](#promisereason)\n  - [Promise.then()](#promisethenonfulfillfunctiononrejectfunctiononnotifyfunction)\n  - [Promise.spread()](#promisespreadonfulfillfunctiononrejectfunctiononnotifyfunction)\n  - [Promise.done()](#promisedoneonfulfillfunctiononrejectfunctiononnotifyfunction)\n  - [Promise.end()](#promiseendcallbackfunction)\n  - [Promise.catch()](#promisecatchonerrorfunction)\n  - [Promise.fulfill()](#promisefulfillvalueobject)\n  - [Promise.reject()](#promiserejectreasonobject)\n  - [Promise.resolve()](#promiseresolvevalueobject)\n  - [Promise.progress()](#promiseprogressargumentsobject)\n  - [Promise.timeout()](#promisetimeouttimenumbercallbackfunction)\n  - [Promise.callback()](#promisecallbackcallbackfunction)\n  - [Promise.join()](#promisejoinpromisesarray)\n\n## Promise([mixin]:Object, [resolver]:Function)\n\n  Promise constructor\n\n  * param Object [mixin] - Mixin promise into object\n  * param Function [resolver] - Resolver function(resolve,reject,progress,timeout) \n  * return Object Promise\n\n  \n## Promise.resolver(resolver:Function)\n\n  Promise resolver\n\n  * param Function resolver - resolver function(fulfill,reject,progress,timeout) \n  * return Object Promise\n\n  \n## Promise.thenable(p:Object)\n\n  Helper for identifying a promise-like objects or functions\n\n  * param Object p - Object or Function to test\n  * return Boolean - Returns true if thenable or else false\n\n  \n## Promise.wrap(class:Function, [instance]:Object)\n\n  Wrap a promise around function or constructor\n\n  * param Function class - class to wrap\n  * param Object [instance] - optional instance\n  * return Function function to wrap\n  * throw \n\n  Example: wrap an Array\n```js\n   p = Promise.wrap(Array);\n   \n   var r = c(1,2,3); // => calls Array constructor and returns fulfilled promise\n   r.valueOf(); // => [1,2,3];\n```\n\n## Promise.defer(-:Function, [args]:...)\n\n  Deferres a task and returns a pending promise fulfilled with the return value from task.\n  The task may also return a promise itself which to wait on.\n\n  * param Function - task to defer\n  * param ... [args] - optional list of arguments\n  * return Object - returns a pending promise\n\n  Example: Make readFileSync async\n```js\n   fs = require('fs');\n   var asyncReadFile = Promise().defer(fs.readFileSync,'./index.js','utf-8');\n   asyncReadFile.then(function(data){\n       console.log(data)\n   },function(error){\n       console.log(\"Read error:\", error);\n   });\n```\n\n## Promise.async(function:Function, [callback]:Function)\n\n  Make function asyncronous and fulfill/reject promise on execution.\n\n  * param Function function - function to make async\n  * param Function [callback] - optional callback to call\n  * return Object promise\n\n  Example: make readFile async\n```js\n   fs = require('fs');\n   var asyncReadFile = Promise.async(fs.readFile);\n   asyncReadFile('package.json','utf8').then(function(data){\n       console.log(data);\n   },function(error){\n       console.log(\"Read error:\", error);\n   });\n```\n\n## Promise.isPending()\n\n  Check if promise is pending\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.isFulfilled()\n\n  Check if promise is fulfilled\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.isRejected()\n\n  Check if promise is rejeced\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.hasResolved()\n\n  Check if promise has resolved\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.valueOf()\n\n  Get value if promise has been fulfilled\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.reason()\n\n  Get reason if promise has rejected\n\n  * return Boolean - Returns true if pending or else false\n\n  \n## Promise.then(onFulfill:Function, onReject:Function, onNotify:Function)\n\n  Attaches callback,errback,notify handlers and returns a promise\n\n  * param Function onFulfill callback\n  * param Function onReject errback\n  * param Function onNotify callback\n  * return Object a decendant promise\n\n  Example: catch fulfillment or rejection\n```js\n   var p = Promise();\n   p.then(function(value){\n       console.log(\"received:\", value);\n   },function(error){\n       console.log(\"failed with:\", error);\n   });\n   p.fulfill('hello world!'); // => 'received: hello world!'\n```\n\n  \n  Example: chainable then clauses\n```js\n   p.then(function(v){\n       console.log('v is:', v);\n       if(v > 10) throw new RangeError('to large!');\n       return v*2;\n   }).then(function(v){\n       // gets v*2 from above\n       console.log('v is:', v)\n   },function(e){\n       console.log('error2:', e);\n   });\n   p.fulfill(142); // => v is: 142, error2: [RangeError:'to large']\n```\n\n  \n  Example: undefined callbacks are ignored\n```js\n   p.then(function(v){\n       if(v < 0) throw v;\n       return v;\n   }).then(undefined,function(e){\n       e = -e;\n       return e;\n   }).then(function(value){\n       console.log('we got:', value);\n   });\n   p.fulfill(-5); // => we got: 5\n```\n\n## Promise.spread(onFulfill:Function, onReject:Function, onNotify:Function)\n\n  Like `then` but spreads array into multiple arguments\n\n  * param Function onFulfill callback\n  * param Function onReject errback\n  * param Function onNotify callback\n  * return Object a decendant promise\n\n  Example: Multiple fulfillment values\n```js\n   p = Promise();\n   p.fulfill([1,2,3])\n   p.spread(function(a,b,c){\n       console.log(a,b,c); // => '1 2 3'\n   });\n```\n\n## Promise.done(onFulfill:Function, onReject:Function, onNotify:Function)\n\n  Terminates chain of promises, calls onerror or throws on unhandled Errors\n\n  * param Function onFulfill callback\n  * param Function onReject errback\n  * param Function onNotify callback\n\n  Example: capture error with done\n```js\n   p.then(function(v){\n       console.log('v is:', v);\n       if(v > 10) throw new RangeError('to large!');\n       return v*2;\n   }).done(function(v){\n       // gets v*2 from above\n       console.log('v is:', v)\n   });\n```\n\n  \n```js\n   p.fulfill(142); // => v is: 142, throws [RangeError:'to large']\n```\n\n  \n  Example: define onerror handler defined on promise\n```js\n   p.onerror = function(error){ console.log(\"Sorry:\",error) };\n   p.then(function(v){\n       console.log('v is:', v);\n       if(v > 10) throw new RangeError('to large!');\n       return v*2;\n   }).done(function(v){\n       // gets v*2 from above\n       console.log('v is:', v)\n   });\n   p.fulfill(142); // => v is: 142, \"Sorry: [RangeError:'to large']\"\n```\n\n## Promise.end(callback:Function)\n\n  Terminates chain, invokes a callback or throws Error on error\n\n  * param Function callback - Callback with value or Error object on error.\n\n  \n## Promise.catch(onError:Function)\n\n  Catches errors, terminates promise chain and calls errBack handler.\n\n  * param Function onError callback\n  * return undefined \n\n  Example: Catch error\n```js\n   p = Promise();\n   p.then(function(v){\n       console.log(\"someone said:\", v);  //-> \"Hello there\"\n       return \"boom!\";\n     })\n    .then(function(v){ if(v === 'boom!') throw \"something bad happened!\";})\n    .catch(function(e){\n       console.log(\"error:\",e);\n    });\n   p.resolve(\"Hello there\");\n```\n\n## Promise.fulfill(value:Object)\n\n  Fulfills a promise with a `value`\n\n  * param Object value \n  * return Object promise\n\n  Example: fulfillment\n```js\n   p = Promise();\n   p.fulfill(123);\n```\n\n  \n   Example: multiple fulfillment values in array\n```js\n   p = Promise();\n   p.fulfill([1,2,3]);\n   p.resolved; // => [1,2,3]\n```\n\n  \n   Example: Pass through opaque arguments (experimental)\n```js\n   p = Promise();\n   p.fulfill(\"hello\",\"world\");\n   p.then(function(x,o){\n       console.log(x,o[0]); // => \"hello world\"\n       o.push(\"!\");\n       return \"bye bye\";\n   }).then(function(x,o){\n       console.log(x,o.join('')); // => \"bye bye world!\"\n   })\n```\n\n## Promise.reject(reason:Object)\n\n  Rejects promise with a `reason`\n\n  * param Object reason \n  * return Object promise\n\n  Example:\n```js\n   p = Promise();\n   p.then(function(ok){\n      console.log(\"ok:\",ok);\n   }, function(error){\n      console.log(\"error:\",error);\n   });\n   p.reject('some error'); // outputs => 'error: some error'\n```\n\n## Promise.resolve(value:Object)\n\n  Resolves a promise and performs unwrapping if necessary\n\n  * param Object value - Promise or literal\n  * return Object promise\n\n  Example: resolve a literal\n```js\n   p = Promise();\n   p.resolve(123); // fulfills promise to 123\n```\n\n  \n   Example: resolve value from pending promise\n```js\n   p1 = Promise();\n   p2 = Promise();\n   p1.resolve(p2);\n   p2.fulfill(123) // => p1 fulfills to 123\n```\n\n## Promise.progress(arguments:Object)\n\n  Notifies attached handlers\n\n  * param Object arguments \n\n  Example:\n```js\n   p = Promise();\n   p.then(function(ok){\n      console.log(\"ok:\",ok);\n   }, function(error){\n      console.log(\"error:\",error);\n   }, function(notify){\n      console.log(notify);\n   });\n   p.progress(\"almost done\"); // optputs => 'almost done'\n   p.reject('some error'); // outputs => 'error: some error'\n```\n\n## Promise.timeout(time:Number, callback:Function)\n\n  Timeout a pending promise and invoke callback function on timeout.\n  Without a callback it throws a RangeError('exceeded timeout').\n\n  * param Number time - timeout value in ms or null to clear timeout\n  * param Function callback - optional timeout function callback\n  * throw \n  * return Object promise\n\n  Example: timeout & abort()\n```js\n   var p = Promise();\n   p.timeout(5000);\n   // ... after 5 secs ... => Aborted: |RangeError: 'exceeded timeout']\n```\n\n  \n  Example: cancel timeout\n```js\n   p.timeout(5000);\n   p.timeout(null); // timeout cancelled\n```\n\n## Promise.callback(callback:Function)\n\n  Resolves promise to a nodejs styled callback function(err,ret) \n  and passes the callbacks return value down the chain.\n\n  * param Function callback - Callback function\n  * return Object promise\n\n  Example:\n```js\n   function cb(err,ret){\n     if(err) console.log(\"error(%s):\",err,ret);\n     else console.log(\"success:\", ret);\n```\n\n  \n```js\n     return \"nice\";\n   }\n```\n\n  \n```js\n   p = Promise();\n   p.callback(cb)\n    .then(function(cbret){ \n      console.log(\"callback says:\", cbret); //-> callback says: nice \n   });\n```\n\n  \n```js\n   p.fulfill(\"ok\"); //-> success: ok\n```\n\n## Promise.join(promises:Array)\n\n  Joins promises and collects results into an array.\n  If any of the promises are rejected the chain is also rejected.\n\n  * param Array promises \n  * return Object promise\n\n  Example: join with two promises\n```js\n   a = Promise();\n   b = Promise();\n   c = Promise();\n   a.join([b,c]).spread(function(a,b,c){\n       console.log(a,b,c);\n   },function(err){\n       console.log('error=',err);\n   });\n   b.fulfill('world');\n   a.fulfill('hello');\n   c.fulfill('!'); // => 'hello world !''\n```\n\n","maintainers":[{"name":"kaerus","email":"anders@kaerus.com"}],"time":{"modified":"2022-06-19T18:49:26.616Z","created":"2013-11-12T19:06:55.693Z","0.3.0":"2013-11-12T19:07:03.610Z","0.3.3":"2013-12-12T09:16:06.663Z","0.3.5":"2013-12-26T10:44:01.538Z","0.4.0":"2014-10-13T17:17:31.345Z","0.4.1":"2014-10-14T10:51:42.380Z","0.4.2":"2014-10-14T13:43:47.525Z","0.4.3":"2014-10-14T14:07:51.510Z","0.4.4":"2014-10-14T14:58:02.031Z","0.4.5":"2014-10-17T08:36:59.448Z","0.4.6":"2014-10-20T21:52:25.361Z","0.4.7":"2014-11-05T16:08:29.746Z","0.4.8":"2014-11-05T17:41:22.811Z","0.4.9":"2014-11-05T18:05:07.139Z","0.4.10":"2014-11-05T19:30:39.396Z"},"author":{"name":"Anders Elo","email":"anders@kaerus.com","url":"http://www.kaerus.com"},"repository":{"type":"git","url":"git://github.com/kaerus-component/uP"},"keywords":["promise","future","promises-aplus"],"contributors":[{"name":"anders elo","email":"anders@kaerus.com"}],"bugs":{"url":"https://github.com/kaerus-component/uP/issues"},"license":"APACHE2_0","readmeFilename":"README.md","homepage":"https://github.com/kaerus-component/uP"}