{"_id":"promise-controller","_rev":"9-389e9c80a9a0d212dd9114a3019da7cf","name":"promise-controller","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"promise-controller","version":"0.1.0","description":"Take more control over promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","lint-staged":"lint-staged","babel":"babel src --out-dir lib","test":"mocha test/specs --require=test/setup.js","test-lib":"TEST_LIB=1 npm t","test-installed":"node scripts/install-local && LIB_PATH=.installed/node_modules/controlled-promise npm t","ci":"npm run code && npm run babel && npm run test-lib","docs":"node scripts/docs","prerelease":"npm run code && npm test && npm run babel && npm run test-lib && npm run test-installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"npm run lint-staged && npm t","prepush":"npm run code && npm t"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/index.js","babel":{"presets":["es2015"]},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-es2015":"^6.24.1","chai":"^4.1.1","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^3.5.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-api"],"license":"MIT","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.1.0","_npmVersion":"5.7.1","_nodeVersion":"8.5.0","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-dXDVvFMk0c2K2LTNhwt7iQAt5JndG/0VzyLoVkBpUfDhvB3JNCCa45Ilw/oqFRJ9OLJQTj7fZOWbLFTuwDED3g==","shasum":"9d5a677c4728a7fee4225bf647cadda0473cc5ec","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.1.0.tgz","fileCount":7,"unpackedSize":4308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1IDcCRA9TVsSAnZWagAA6DUQAIVjSLYxuLiqyDTz3gmb\n/kLDKPBxG3mQmBr+kZZwvrfV/HlEm4/hZ96hr+rT1GaNLJ/+gIOkueXhBsQB\nyByb42WvqT9lfLcKqcfDbAmbiioB3GRciRTJKmDCn+AZexO+ZLCD8HeAS7qL\nHE4fQ80gGhq/3psEXLi+4ndRHopqUdSa82x7cduEBV5+ura6Yv8a5/+67H+l\nemujq11Rmi5VgcVUyGrdZncK4D50ONNxknvSsqven9vP3ToyszOvg2vxdnOK\nE261oNzdjAidslflFvPCax+635grm2gemC9fk9EQwNj0BKMRhI+NMkLeD1IR\nX2/ojnjA6QDHRXY5mZzMNbGukcHuJc7UiZ4jeZCyQoOee82xe40VJ8tHYXPY\nbvVgXdIyyL0sU74Cxf9i/jZKMWzyIKGoCGBCAWnoQzppHTzZjrV9zNQPKgZL\nPIcN4Q8FihlM8Z1qXOrwwTK9ATO4pTlQ8E8cYjTB3VbFncAKexFaxH/gKBiB\nPgeUtRzhT0OFakizZZ9ZI2san+1LcbLoozPZKPJBgZhrLnSf6FSTK+XMGWxK\nq1zf+kVJndT5NmcbFhY1FfiesmuacqIAP/VejVh179YXlCzV9Zm/puwL/eWu\n4Gc/kV6miA7qTh0sG3VcHzJkmUvJF2WdhMiiFQ3SvgdmdWs7/bDlHmp3IB2n\nwoBU\r\n=i2/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw+h1DDIlwoYpHnyYYXk0em0Enoba2kMcr1y4u5sIlQwIgN3VC6DtLeTsGwojG0MFertumVrFO0TiUbNMNVk3CKy0="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.1.0_1523876060509_0.6229120812217177"},"_hasShrinkwrap":false},"0.1.1":{"name":"promise-controller","version":"0.1.1","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","babel":"babel src --out-dir lib","test":"mocha test/setup.js test/specs","test-lib":"npm run babel && TEST_LIB=1 npm t","test-installed":"node scripts/install-local && LIB_PATH=.installed/node_modules/promise-controller npm t","ci":"npm run code && npm run test-lib","docs":"node scripts/docs","prerelease":"npm run code && npm test && npm run test-lib && npm run test-installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"npm run code && npm t"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/index.js","babel":{"presets":["env"]},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.7.0","chai":"^4.1.1","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^3.5.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"27b6b278527eb4b6a2873174c8400bae50431eff","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.1.1","_npmVersion":"6.1.0","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-xIN1H0TAIP40hiYoszbdCdRZc0SxcLoFeUKYr8Zll7xQznot1OMpAkpbWm2CQ9nvlRbZUfbgZRYt3i3bhOtKlg==","shasum":"1f857058d65f08f7d410cd18b3fad12b516b6664","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.1.1.tgz","fileCount":19,"unpackedSize":32875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbO5h5CRA9TVsSAnZWagAAmBQP/Al7bGRTfUCW2AwRxmso\nd3bMKjxw9Ev2FTPDILhOQKpWL4WGgkc3RnscdpTT3SCwVnG12bJx7tuQjn2+\n/TLlMIFXLeUdKhDAEr7AZRrip4LWOayAc31VfVyaPn83odAfgNGctUoWzDBJ\nMvwKO+vBWAt3T8BHEKS6HG8bk5sH9MWkc2EiCANQ6/iaOHCq0h0Levx1kWiy\n6W3ATMsJ0VxW1tj7nrB3ORy6wTZ7gskkSOjNCOUCGgR6mNYEs7UKm65mxIKf\nxX9RFUDOL62Q8cJMD6INWJ90TGV4ZWD+jh08nXQY3WbeLo0ryPtYI0Ymts1l\nnD0dGTTeuH0wmgrxrl1hgo6Ls84N9Z1TmBk1CWqij3QQLI6jtEAIDqNusI09\ne8bbCKhBpCtvt9PLndvibYoVUqGdjPFiqTXvmlio3LMTzb++Kim3lgpb8j1G\nfiNekzjWE9AsoO7XZlM1XGa0IR61wKZJ+DoqdF1mFpFrHbybV1k/YHLM4eWT\nJnBkxXg2dRnIFtyOgycyCVRa5Msc9E/nQWCiWlUZIljXRCqwgkDaxPEWPfWf\nbFzih9unyc15skD8rka6eRolj5G1qw3OJOdQlA9MKNaN3K5rijGDWDGGECgJ\ne8L+pjuGoh3umt87LrSTX7sOADlWrrwnXGHQXJIHH7BaKZbkcuI2mpMKqR3Y\nEHDN\r\n=/C52\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA3OZiCLWyu3vVdZ+zQOhCQUZ3+75wnTsa4NFXnkgQ32AiEAwqzWnqleFqPdyix8U6vpmq9hH0QLqDl5KDEsJh3c1zU="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.1.1_1530632313832_0.6773058844999862"},"_hasShrinkwrap":false},"0.2.0":{"name":"promise-controller","version":"0.2.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","babel":"babel src --out-dir lib","test":"mocha test/setup.js test/specs","test-lib":"npm run babel && TEST_LIB=1 npm t","test-installed":"node scripts/install-local && LIB_PATH=.installed/node_modules/promise-controller npm t","ci":"npm run code && npm run test-lib","docs":"node scripts/docs","prerelease":"npm run code && npm test && npm run test-lib && npm run test-installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"npm run code && npm t"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/index.js","babel":{"presets":["env"]},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.7.0","chai":"^4.1.1","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^5.2.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"b6378a641931081cb4dc0ebbcae6544870b18610","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.2.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-2NG+3/E2waxHNqBeS0/UeKyxim1yJ7Omwal1faR9hn+7nccMs9nQ/4Xy/7Fr510zKirbI+Tu1mVn+9uxYzTUsw==","shasum":"dd4789327aec81dfd6ce9531b4d3839998684753","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.2.0.tgz","fileCount":19,"unpackedSize":35212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbQ6C/CRA9TVsSAnZWagAA4s8P/1p8c1MmsmsiEd8+/veW\nHZnWAS/VjCDcQxhPN5QMCQKOQ4PCFZw3fY+00qBG1trUCWXzGKUizgaExxO/\n1bkBUDd3kUs+QlTkfyjvexCAqDV+VI5uAMZF9sdib1kqq2m3lvnPMY8cPOkl\nj32n53FAyyuFzGWF+9E0XPXJUV3JR2LubSp1yUHISwejo57HXgpFZpJ3xXyT\nD2494YJQGAe/UmDrg4TS5VckvazAZiK7sbqhU4ka5gMsWKvanvJIsDN73yE3\neWwa8Mfj2qf3xD64JNTn1u09AKX1482vef3+PSfLPkA8PJNqYSJQIg9w4jUa\nX7XDMtRsTgB/3tdwNav9v06J8jmagXLC1yWwPSvTylmE8ArugzzrG+Nb+VAj\nIVclvoZvsCYhrE7kks1D01IHyH856UHH2ddWT8nLddVrAYsKZPlylFTOv5xU\nsU+nTmwXB5YXqw2qYgrVkTGCAKkJlbnQ8VEDqYALGavpWRC1lzKcGWRuhEjl\nRrwFIuqCc7Z3m+SMVbO6zGsdmS794pDW/S7sPo7UI5H20kLAR+ux0B9x/T6J\nSAMmi4aeli4+bLnL5G4aZABr0WG/rJLECJiBX4yMDcBYd6ZxE81yg3nxs4Zx\n6eznNtCW9/l0kAdcRBu4LrifTFkOzbpTxpqiclMVathzszvqUcyvaOlBZru1\n7Qss\r\n=DUff\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxr3S5rXFj8hodpTKQjYYQxSOTlvpYs+GvcKBhdJ/ZDAIgF4ScStlUEdFxjXj0AlGeSGbXJjZPqDaBcFvuq6U91hc="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.2.0_1531158719376_0.6960676088182256"},"_hasShrinkwrap":false},"0.3.0":{"name":"promise-controller","version":"0.3.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","build":"webpack","build:prod":"webpack --mode=production","test":"mocha test/setup.js test/specs","test:bundle":"npm run build && LIB_PATH=../lib/bundle.dev.js npm t","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s code test:bundle","docs":"node scripts/docs","prerelease":"run-s code test test:bundle build:prod test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"npm run code && npm t"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/bundle.prod.js","devDependencies":{"babel-cli":"^6.24.1","babel-loader":"^7.1.5","babel-preset-env":"^1.7.0","chai":"^4.1.1","clean-webpack-plugin":"^0.1.19","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^5.2.0","npm-run-all":"^4.1.3","webpack":"^4.16.2","webpack-cli":"^3.1.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"f303436d794b83ef4e709e4ecf0b21b08c0ae263","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.3.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-w1RTaOwD5bNtYjIj5L8+ruDtMgnKC0pLtOogA3kcS4LRtiwLOpAdokjYbkjJMa6AGV0oasHa8RRNa8qEpG1qyw==","shasum":"e512a5059075a0c2dedd1488695412f0650c33f7","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.3.0.tgz","fileCount":20,"unpackedSize":44909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWwLeCRA9TVsSAnZWagAAlx0P/i2i6C65gZ11mUdBtOho\nT0sjaaflk7EHBSzZGZCMdk1pkjpQZgF/B5sKywkxiLj+89XBGPH5esxwOllX\nG0IDdgcMuKxT9Ax68Yvs3jb5U4+XdVzss89BLhfTrDQSePDUuY1fAPHpftPB\ne5sLiTf8Zc60TdXd7O8BRxyfbF2Fznb2qXch+xyVGcJKSH1Tj2r2K536+yIs\ndtyV4VuiwiXcgNxqcrPx6hLXU7ngyJXgnDEH4ni6F46QYLWRfz9K31HafBFc\nxfpBliR+jwqXINmg5y12kzyh2DHjyVBYcovf1xAEdhpA7hUVjQ7ANukXsRQY\nZ6FqZFdSo/aZ8YLQNT3+qktswp2Oq60qOcLYjYzyHPvGHd3PqRtnZtZpmbek\nuHGtGQCIbkD0VmxCg++um7pofhzAAAGdUTbWkPg4z24wP47Hxl7gMEImSWzj\nUrvc+tpuF2EAQMwZ80j0zHkV/QsZNhiyliiUn0Sm2V/chbzuJNPX0iFx0kOv\n4RMWlPISk2eVrJ+frIc+KIu1GS+R5svm1EoVB9xqWu7afSiM4HpnweOgfKnk\nYVpphFry2ZqlsvC5THPCp2wmHVJoOC2gqoCzInu0zNLPfUOau8YRl+g6Vhc5\nKItPcP2mkW1pJzHkCYTKGDaRVp3EOrPNQKbJ3r8hjm5NSjhsP50+ydLKBbcR\np2q6\r\n=LOMU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKsKS/3kEeS4Bfr/RbvO4DR95HMEAYvMebVLjZjU6iuAiEA4csYmpg8Z1xenyyCgYEgUbxTnKPohlp/inN5qg49tAY="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.3.0_1532691166026_0.8981871368818377"},"_hasShrinkwrap":false},"0.4.0":{"name":"promise-controller","version":"0.4.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","build":"webpack","build:prod":"webpack --mode=production","test":"mocha test/setup.js test/specs","test:bundle":"npm run build && LIB_PATH=../lib/bundle.dev.js npm t","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s code test:bundle","docs":"node scripts/docs","prerelease":"run-s code test test:bundle build:prod test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"run-s code test test:bundle"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/bundle.prod.js","devDependencies":{"babel-cli":"^6.24.1","babel-loader":"^7.1.5","babel-preset-env":"^1.7.0","chai":"^4.1.1","clean-webpack-plugin":"^0.1.19","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^5.2.0","npm-run-all":"^4.1.3","sinon":"^6.3.4","webpack":"^4.16.2","webpack-cli":"^3.1.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"68aa1770967190b105d66cdd0d128893b4972740","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.4.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-FFztT6HtkkHxSdf7eG7zrHjBST6UtJyqv9zWxSIQrirWcMOaWmpKBsXpI9DXvGskq3RX0GwrYmw2Tthjal1veg==","shasum":"790e82801df998ba37f40b1e4298cb764201d344","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.4.0.tgz","fileCount":21,"unpackedSize":47897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpQqMCRA9TVsSAnZWagAAYTMP/1CGKFKed4dxZ1l4C4Mz\nU5Su7SYqWskCan/04SgRn48lUXGEK2/5MbkMpKteRTfQ0qKWVkBkliqSyl2N\nkQ65f3ylE7NSSSYux3+ybiUTLtusk7cKMf6HAJt5YJPafLrSQ8JJqQuBzYDr\ngSzPC+UZLy6GT/6dkzr+6iGEl0PvuKMZB3uB8e1CDZV6xUAAgdv6wvYw15/X\ny1bbrOpg4hivtdowuZAr5IhhBycy8nad4T/wyytHobdL60h+ZYJuEP0nS02n\nsO25ZQx+j03dddSJ6sXSe0342kWFlsGYYxwncEzY4F5qm/vE3FaWBEXdNdnx\n8XQDPdzdfZyz4AiaqCFs33FNyFtjuSW8cgVehZrivCr1IDh5c/QGPduBNPzb\n1ix06MIdc+GmHA1dUTr6/mAn6BZ1lQuVtR/p9uT4DwvZLGH4q5kR5mbKIbTQ\nBG+2ulr9ArvkDHc3cTHo5YCQuFh/VyFzChIs3ppSfADjmPFboZr0p2unKB1D\nVz4gX75iIpB513k9/eUmwH9w5tvG08rCz1VCdSyt0U0PVxWLWR4c2FsD5JFs\nrAXJGsYXKdsXgR8Ykx/G4z4DruOJ1/mxaRzecnfRBfwnv9HLNZE/oBlfJt++\nUYKlFsoVl2ZbTvlVjcsFhs0UgUyy6jC7qKdiEUswCVwkPbgccVf0N8HtYH5L\nk+LO\r\n=uf6Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlF/6EOG56boqllZWcCWJJNEY3PaEv2X47XgzoCpSFPQIgTgXEudrhZaUvaCieHaYLQjMGBEYBEEzexqPjjmu2FEE="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.4.0_1537542795363_0.9208463427109075"},"_hasShrinkwrap":false},"0.5.0":{"name":"promise-controller","version":"0.5.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","build":"webpack","build:prod":"webpack --mode=production","test":"mocha test/setup.js test/specs","test:bundle":"npm run build && LIB_PATH=../lib/bundle.dev.js npm t","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s code test:bundle","docs":"node scripts/docs","prerelease":"run-s code test test:bundle build:prod test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"run-s code test test:bundle"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/bundle.prod.js","devDependencies":{"babel-cli":"^6.24.1","babel-loader":"^7.1.5","babel-preset-env":"^1.7.0","chai":"^4.1.1","clean-webpack-plugin":"^0.1.19","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^5.2.0","npm-run-all":"^4.1.3","sinon":"^6.3.4","webpack":"^4.16.2","webpack-cli":"^3.1.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"dfd74f0cbc95602cd7cf651c76d2d463b15dfb44","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-pSeDAoAQwMbTa7BkQvnZUgbYwKXJJImoUKSOHCQ1/GHkCe6x/mVKSeLvC6k77C1/LAIgy4KE3oK5JCpUdri9Lg==","shasum":"03dcdca183e513653f3e69668cd217cc5407cf8d","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.5.0.tgz","fileCount":21,"unpackedSize":48591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrheZCRA9TVsSAnZWagAAleoP/jt7q/bTR6DC6cF/jjF4\n+RfbhmCrE0PrebK9/Lh8gwl7/hV0HSfPWAy3Czlu0/HKtj9wIHnJwFuOwWop\nor8TioDTuK5FZumcD0UTdo9tzAYENHCxTJK6RPMOK8snAvFdp76zTML4lHoH\nBK5jB7O/EQ9WwFb5wN1ISbUfam9JQLRA/2Hf7PfTL4vjClQodexNrkNUfOzD\nTtbEWn8T48PvhQfZU7fLDxeeT2K2HBo2puwcLk1pwJ9PL0ULETQz3y48qULD\nxs2UDdRHCiOD8fKJvfIwn504bqeaFXr+R8PQCFOX78Q00cTlSp44GqJKWOq2\nFpo8gsdTH5kKhgIQHFx+hxS/JE4GceWDJXXWkm/ZSLbCqKwDLHQ86KRo8/Ty\n1Lo8LJQCZX6GvqdEN0lUWQY/GYD+qWGmkEfgVMd0qoO3g8Raw3339lSJeVPA\nHUbF+/xtgRjhVGCTfzUOalZN9USGXav5j+BsRJ6AY/YJsKlL3SsVvasDAxU1\n83dAWrsI33NK6iDRSngsYJ5zzFS0mtMlPEFMcyGWiLhOn/Mp5HEwn2HQbtbK\ntsfTdWktAswAeO0eUNKbhfoMjR5ofPsCRIlv/vwaHwHNpFSiB40GQBR7Ad7k\noNvXvEVo1cNeQfjAWp2zbm8uJi6sRnrzgaKKnmEprNEJmQMv5N2sgRqoAbGd\nF4iD\r\n=c7lv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWU2stPB/CNKiK1LuRhWgm++sAy7Vh9FV1e1pkquod0gIhAPgQIwAnB0/Jok8PPh1q9i0N/B8B0thbZUPeyshsz8m2"}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.5.0_1538135960905_0.333414283916462"},"_hasShrinkwrap":false},"0.5.2":{"name":"promise-controller","version":"0.5.2","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=6"},"scripts":{"code":"npm run lint-all","lint-all":"eslint src test","build":"webpack","build:prod":"webpack --mode=production","test":"mocha test/setup.js test/specs","test:bundle":"npm run build && LIB_PATH=../lib/bundle.dev.js npm t","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s code test:bundle","docs":"node scripts/docs","prerelease":"run-s code test test:bundle build:prod test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release","precommit":"lint-staged && npm t","prepush":"run-s code test test:bundle"},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"lib/bundle.prod.js","devDependencies":{"babel-cli":"^6.24.1","babel-loader":"^7.1.5","babel-preset-env":"^1.7.0","chai":"^4.1.1","clean-webpack-plugin":"^0.1.19","eslint":"^4.4.1","husky":"^0.14.3","install-local":"^0.4.0","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.3","mocha":"^5.2.0","npm-run-all":"^4.1.3","sinon":"^6.3.4","webpack":"^4.16.2","webpack-cli":"^3.1.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"6b5f3cf3fddd0091202c165ccb1981b413a8a6b6","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.5.2","_npmVersion":"6.4.1","_nodeVersion":"8.11.2","_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"dist":{"integrity":"sha512-ymVCGfCxN+A+6TqESLnGZhGfQdQJ08SpIMyft4xQPUDrOgoqzKcQnLIYaqQk7/rPyg4wpKpxBKefeGkvumWgUg==","shasum":"f32d2156dc1f8e62703bf9fb0b8158335660c212","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.5.2.tgz","fileCount":8,"unpackedSize":37781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbriiKCRA9TVsSAnZWagAAHuwP/207ryebtrE/O5MfUvpR\ndiIq1k1BMwEWTBjywSEK8/vKDO1ofXZxUv76U1hzAHFc7/8DCXT6NNtR6bKz\nM2No7oQCuXYXF1iEfxm4WMMis84maukrf+PU6bGLpmgSfWJ2mAXaCH4jFAJh\n7e21tvvRiS2T9xeeAY6vvnIWaTUk9YAKBOxyPbyTpC5ATyCfyyQD2rxWIsmE\nD/1WPw5co/KV4CqlZko+2f1NqaAxvHxvY9pGrfqsmudmPGp7tntSnPO4ysLZ\nyiWwI+/PUBbzrpE9apdwtmhAMDpnePDsvqSfHyH4rEnyUlkzbP/JEGP21mX1\nHSK3R2edecfBvfOF/3SD5BqmGWqvioOXueQvZKO5WZLItaps1iZGkn+P72tY\naqgZoEiAs8EP69l9M3z9pd4JszlNxkCd4L9kVCuHBipF5D5iJ73xnN4i4jgk\nrImMDwPQI94o57UVi/p/sFeAV1pwJFrqF0kAmk9hNNpYjWgT2tSMUwTpjNXM\nikz51QWJRk5JVH7ltSa6sYZLKADOAF/FsneeYZzI/noBdyXRy02wBr2R8Z6Q\nYhgmCJhcY9JHr3nLSViFJLI++eVfOrmlePSMtuCgPj6CFqIBtoKEMVDfcLaM\nwwQ6JZUl0qvfuvy8fkOnTf0qqfH/ZeraPV6tID6QgwCRLNljnzPyrqrq0jBn\nMMec\r\n=x8kb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDulV6qyrFU7vk8hh7g32C8oE5IyMfPGr4jra8g7gQhaQIgChfqxsptPXzOFaQMCs75qW2FCHhAkGwdKV0SxC7CzOg="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.5.2_1538140295271_0.6068895934804839"},"_hasShrinkwrap":false},"0.6.0":{"name":"promise-controller","version":"0.6.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=8"},"scripts":{"lint":"eslint src test","build":"rollup -c","test":"mocha test/setup.js test/specs","test:bundle":"LIB_PATH=../lib/bundle.es5.js npm t","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s lint build test test:bundle","docs":"node scripts/docs","prerelease":"run-s lint build test test:bundle test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release"},"husky":{"hooks":{"pre-commit":"lint-staged && npm t","pre-push":"run-s lint build test test:bundle"}},"lint-staged":{"{src,test}/**/*.js":"eslint"},"main":"src/index.js","browser":"lib/bundle.es5.js","devDependencies":{"@babel/core":"^7.6.4","@babel/preset-env":"^7.6.3","chai":"^4.2.0","eslint":"^6.5.1","husky":"^3.0.9","install-local":"^1.0.0","jsdoc-to-markdown":"^5.0.2","lint-staged":"^9.4.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","rollup":"^1.25.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-banner":"^0.2.1","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-delete":"^1.1.0","rollup-plugin-node-resolve":"^5.2.0","sinon":"^7.5.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"e61b33125626693ac3c7aa5d941d869aec44c74b","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@0.6.0","_nodeVersion":"8.15.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-APS23OFCowMNSoxMsP5THL0ubWGvDyRNT+nOY3CK+Vg+2ogv/sVB7bCbBz2rB7I0yZ+wm7JwLLj8pUzB2ghvHg==","shasum":"9b8aab2dd630acd9bfe41db7030c09034d15c657","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-0.6.0.tgz","fileCount":7,"unpackedSize":28021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrBfiCRA9TVsSAnZWagAAJzUP/15+ywfCkmJH2/0Wp1PQ\nGcRof/cfOy65dYXRY+QQT7CQNzfVJJEFFVlS8jmpmSiFQ1i9QgZIyWonY3io\nfWYIo4vZFXQt7qcoqo2sx2lXSCNwePgHFkw7FQcFIa8W/y98pOS7lMptqH8g\nbUVBIY1g0VKv8PA43igoThEqfqE5OHTtCq6jw6Mqqq9jODNha67jrn6qu/fl\nHsOMyf5wfDRLfj3ssqPURAHngxFs4wm1sVGsDFOcTAiFG+HV1RZJMpXtAFcB\npBWYzeniC13slm7lsgMCg0GrzP9sY3PR4GeONSuzfhtHqV/5eDDdhGBxir3a\n97C2xHKLLd37rOQroiXh1Fka12KeCxyZE/rEE8Ta8y8J11iMU9NVFlxdNxpX\nGY+aG75Oge80aIh8bnsC7Y+oWiE5ZcXOqy60wtjbpgBnC/nFmIIwGVSgQS4r\niq4wotSLtHg55rv270mkhsChxeVGDcI9sByhk4MSS9lwqq3cg1H/9tikECWV\nfZIHjSQ9f02zEVWCkXpLhjUWH0O52ZMnp8vsukSNbRMmMh4xwunJJte9eIkG\nMouB5+TVeMoCkr0Ax+v/I54efo5Ebh3kmw/ZIubnpuUqMnISP3xRYoN0BycC\n92MyXOaLqtNFS+seZJWuo7CosMLMH3HXF8eduOTdgdUksWco7bMVwZpAxVSY\n0PZm\r\n=5nH9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIiFv79MQq0pYn+6CGYIagyUj6v32duFVXogYrnyM+UAiAUszIqD1KXOTSvYxhDNum3qyABC+D0i0Hn3xmGTBYVyA=="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_0.6.0_1571559393388_0.4464166123519169"},"_hasShrinkwrap":false},"1.0.0":{"name":"promise-controller","version":"1.0.0","description":"Advanced control of JavaScript promises","author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"engines":{"node":">=8"},"main":"src/index.js","scripts":{"lint":"eslint src test","test":"mocha test/setup.js test/specs","test:installed":"node scripts/install-local && LIB_PATH=../.installed/node_modules/promise-controller npm t","ci":"run-s lint test test:installed","docs":"node scripts/docs","prerelease":"run-s lint test test:installed","release":"npm version $VER && npm publish && git push --follow-tags --no-verify","release-patch":"VER=patch npm run release","release-minor":"VER=minor npm run release"},"husky":{"hooks":{"pre-commit":"lint-staged && npm t","pre-push":"run-s lint test"}},"lint-staged":{"{src,test}/**/*.js":"eslint"},"devDependencies":{"chai":"^4.2.0","eslint":"^6.6.0","husky":"^3.1.0","install-local":"^1.0.0","jsdoc-to-markdown":"^5.0.3","lint-staged":"^9.4.3","mocha":"^6.2.2","npm-run-all":"^4.1.5","sinon":"^7.5.0"},"keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"license":"MIT","gitHead":"10f4697aacf9a2749aee64c233665dfd84e0b342","bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"homepage":"https://github.com/vitalets/promise-controller#readme","_id":"promise-controller@1.0.0","_nodeVersion":"10.16.1","_npmVersion":"6.13.0","dist":{"integrity":"sha512-goA0zA9L91tuQbUmiMinSYqlyUtEgg4fxJcjYnLYOQnrktb4o4UqciXDNXiRUPiDBPACmsr1k8jDW4r7UDq9Qw==","shasum":"81ebea71271aa40ac8f3bebccab3d4158dc4cc02","tarball":"https://registry.npmjs.org/promise-controller/-/promise-controller-1.0.0.tgz","fileCount":5,"unpackedSize":17648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1r9ZCRA9TVsSAnZWagAA/U4P/3wlV0jD3lbiYocfCTrv\nDaIhAVCMwvABeJcdNZXD9NXJCiF3JZnH+Lg63ZJj2Ex6qBcJDCvGBr/fxekq\nQq0jpj3x6NoureWlNPmlBYohDo8Tdqxv4Mx3OZJdZ+igFEPx74StOorqL98p\nBqhRfT1nStfLq+WU3ULHUQw04mE51FzfhjLJ4DIvatalbgnHZXaxS2gzfuW8\nX75oSmJI/zCebf5dS48b5d+2dAipojh5eZO+oJUjaLjv583xpSdhgaV7/61b\nWaVkqq9cX5aFmoEnaKG/ZP01iW03QhExKhtnxcso0gHgBgJTXjff85o5FYjY\nvwIDxEmk7gdq4X3a0pZIUxpsusD728xn/+iB3GGot2Gi5KMjBn+EGJlJxqfL\nz18hyYkGJCCQFsOV4iYVkDXiRbaUmwaRs/JnP8dZsoAXLV8YFzL1UceIqd70\nVjt4yamvOuZA1QGD1Ox6b81UyZ4dJOT9PAYjFXApGqWIBWQqGnhUZWUAEvcX\nEWG2tjXjhqtSTqTicAUZNTtNlJhMuX/rR+5P+mG8n0tVYlLQ2OIVYlM4O6hv\nYxXO7AsdS/wtPbLhOQvG1ylyYwcVlXmXDrfvfiV5l0v9PcrrPly8dd2eyV29\nM164y0JTF9kiEwvnV8mZav4W2Qm4TwUdrNEzBybsq+iR7A0MErLSI7opdyck\nSUJX\r\n=h5Dz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBR0KJg4UWIgFxeNHdzBClljZfZFWIkv4HedOQpQbCMcAiEAr+YOHCzXdYTxp01Lp9pPK9KjNhMMagpGVqZv4mrXJHY="}]},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"_npmUser":{"name":"vitalets","email":"noginsk@rambler.ru"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-controller_1.0.0_1574354777416_0.7038800898388129"},"_hasShrinkwrap":false}},"time":{"created":"2018-04-16T10:54:20.507Z","0.1.0":"2018-04-16T10:54:20.649Z","modified":"2022-05-13T12:22:57.425Z","0.1.1":"2018-07-03T15:38:33.904Z","0.2.0":"2018-07-09T17:51:59.431Z","0.3.0":"2018-07-27T11:32:46.102Z","0.4.0":"2018-09-21T15:13:16.046Z","0.5.0":"2018-09-28T11:59:21.107Z","0.5.2":"2018-09-28T13:11:35.368Z","0.6.0":"2019-10-20T08:16:33.556Z","1.0.0":"2019-11-21T16:46:17.503Z"},"maintainers":[{"name":"vitalets","email":"noginsk@rambler.ru"}],"description":"Advanced control of JavaScript promises","homepage":"https://github.com/vitalets/promise-controller#readme","keywords":["promise","promises","promise-library","promise-wrapper","promise-control","promise-api"],"repository":{"type":"git","url":"git://github.com/vitalets/promise-controller.git"},"author":{"name":"Vitaliy Potapov","email":"noginsk@rambler.ru"},"bugs":{"url":"https://github.com/vitalets/promise-controller/issues"},"license":"MIT","readme":"# promise-controller\n[![Build Status](https://travis-ci.org/vitalets/promise-controller.svg?branch=master)](https://travis-ci.org/vitalets/promise-controller)\n[![npm](https://img.shields.io/npm/v/promise-controller.svg)](https://www.npmjs.com/package/promise-controller)\n[![license](https://img.shields.io/npm/l/promise-controller.svg)](https://www.npmjs.com/package/promise-controller)\n<img align=\"right\" src=\"https://user-images.githubusercontent.com/1473072/31122235-ad06e442-a843-11e7-8c7e-c24149b6eeda.png\"/>\n\nAdvanced control of JavaScript promises.\n\n## Installation\n```bash\nnpm install promise-controller --save\n```\n\n## Usage\n```js\nimport PromiseController from 'promise-controller';\n\nconst pc = new PromiseController();\nconst promise = pc.call(() => startAsyncProcess());\n// ...when async process done\npc.resolve('done');\n// or\npc.reject();\n```\n\n## Use cases\n\n* [Easy access to `resolve` / `reject` callbacks](#easy-access-to-resolve--reject-callbacks)\n* [Re-use of existing promise while operation is pending](#re-use-of-existing-promise-while-operation-is-pending)\n* [Automatically reject after timeout](#automatically-reject-after-timeout)\n\n### Easy access to `resolve` / `reject` callbacks\nWith bare Promise:\n```js\nlet resolve, reject;\n\nconst asyncOperation = setTimeout(() => Math.random() > 0.5 ? resolve() : reject(), 100);\n\nconst promise = new Promise((_resolve, _reject) => {\n   resolve = _resolve;\n   reject = _reject;\n   asyncOperation();\n});\n```\n\nWith PromiseController:\n```js\nconst pc = new PromiseController();\n\nconst asyncOperation = setTimeout(() => Math.random() > 0.5 ? pc.resolve() : pc.reject(), 100);\n\nconst promise = pc.call(asyncOperation);\n```\n\n### Re-use of existing promise while operation is pending\nWith bare Promise:\n```js\nlet promise = null;\n\nfunction connectToDb() {\n    if (!promise) {\n        promise = mongoClient.open();\n    }\n\n    return promise;\n}\n```\n\nWith PromiseController:\n```js\nconst pc = new PromiseController();\n\nfunction connectToDb() {\n    return pc.promise || pc.call(() => mongoClient.open());\n}\n```\n\n### Automatically reject after timeout\nWith bare Promise:\n```js\nlet resolve, timer;\n\nconst asyncOperation = setTimeout(() => {\n    resolve();\n    clearTimeout(timer);\n}, 100);\n\nconst promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    asyncOperation();\n    timer = setTimeout(() => _reject(), 50);\n});\n```\n\nWith PromiseController:\n```js\nconst pc = new PromiseController({\n  timeout: 50\n});\n\nconst asyncOperation = setTimeout(() => resolve(), 100);\n\nconst promise = pc.call(asyncOperation);\n```\n\n## API\n\n### Classes\n\n<dl>\n<dt><a href=\"#PromiseController\">PromiseController</a></dt>\n<dd></dd>\n</dl>\n\n### Typedefs\n\n<dl>\n<dt><a href=\"#Options\">Options</a> : <code>Object</code></dt>\n<dd></dd>\n</dl>\n\n<a name=\"PromiseController\"></a>\n\n### PromiseController\n**Kind**: global class  \n\n* [PromiseController](#PromiseController)\n    * [new PromiseController([options])](#new_PromiseController_new)\n    * _instance_\n        * [.promise](#PromiseController+promise) ⇒ <code>Promise</code>\n        * [.value](#PromiseController+value) ⇒ <code>\\*</code>\n        * [.isPending](#PromiseController+isPending) ⇒ <code>Boolean</code>\n        * [.isFulfilled](#PromiseController+isFulfilled) ⇒ <code>Boolean</code>\n        * [.isRejected](#PromiseController+isRejected) ⇒ <code>Boolean</code>\n        * [.isSettled](#PromiseController+isSettled) ⇒ <code>Boolean</code>\n        * [.call([fn])](#PromiseController+call) ⇒ <code>Promise</code>\n        * [.resolve([value])](#PromiseController+resolve)\n        * [.reject([value])](#PromiseController+reject)\n        * [.reset()](#PromiseController+reset)\n        * [.configure(options)](#PromiseController+configure)\n    * _static_\n        * [.TimeoutError](#PromiseController.TimeoutError) : [<code>TimeoutError</code>](#PromiseController.TimeoutError)\n        * [.ResetError](#PromiseController.ResetError) : [<code>ResetError</code>](#PromiseController.ResetError)\n\n<a name=\"new_PromiseController_new\"></a>\n\n#### new PromiseController([options])\nCreates promise controller. Unlike original Promise, it does not immediately call any function.\nInstead it has [.call()](#PromiseController+call) method that calls provided function\nand stores `resolve / reject` methods for future access.\n\n\n| Param | Type |\n| --- | --- |\n| [options] | [<code>Options</code>](#Options) | \n\n<a name=\"PromiseController+promise\"></a>\n\n#### pc.promise ⇒ <code>Promise</code>\nReturns promise itself.\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+value\"></a>\n\n#### pc.value ⇒ <code>\\*</code>\nReturns value with that promise was settled (fulfilled or rejected).\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+isPending\"></a>\n\n#### pc.isPending ⇒ <code>Boolean</code>\nReturns true if promise is pending.\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+isFulfilled\"></a>\n\n#### pc.isFulfilled ⇒ <code>Boolean</code>\nReturns true if promise is fulfilled.\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+isRejected\"></a>\n\n#### pc.isRejected ⇒ <code>Boolean</code>\nReturns true if promise rejected.\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+isSettled\"></a>\n\n#### pc.isSettled ⇒ <code>Boolean</code>\nReturns true if promise is fulfilled or rejected.\n\n**Kind**: instance property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+call\"></a>\n\n#### pc.call([fn]) ⇒ <code>Promise</code>\nCalls `fn` and returns promise OR just returns existing promise from previous `call()` if it is still pending.\nTo fulfill returned promise you should use\n[resolve](#PromiseController+resolve) / [reject](#PromiseController+reject) methods.\nIf `fn` itself returns promise, then external promise is attached to it and fulfills together.\nIf no `fn` passed - promiseController is initialized as well.\n\n**Kind**: instance method of [<code>PromiseController</code>](#PromiseController)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [fn] | <code>function</code> | function to be called. |\n\n<a name=\"PromiseController+resolve\"></a>\n\n#### pc.resolve([value])\nResolves pending promise with specified `value`.\n\n**Kind**: instance method of [<code>PromiseController</code>](#PromiseController)  \n\n| Param | Type |\n| --- | --- |\n| [value] | <code>\\*</code> | \n\n<a name=\"PromiseController+reject\"></a>\n\n#### pc.reject([value])\nRejects pending promise with specified `value`.\n\n**Kind**: instance method of [<code>PromiseController</code>](#PromiseController)  \n\n| Param | Type |\n| --- | --- |\n| [value] | <code>\\*</code> | \n\n<a name=\"PromiseController+reset\"></a>\n\n#### pc.reset()\nResets to initial state.\nIf promise is pending it will be rejected with [ResetError](#PromiseController.ResetError).\n\n**Kind**: instance method of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController+configure\"></a>\n\n#### pc.configure(options)\nRe-assign one or more options.\n\n**Kind**: instance method of [<code>PromiseController</code>](#PromiseController)  \n\n| Param | Type |\n| --- | --- |\n| options | [<code>Options</code>](#Options) | \n\n<a name=\"PromiseController.TimeoutError\"></a>\n\n#### PromiseController.TimeoutError : [<code>TimeoutError</code>](#PromiseController.TimeoutError)\nError for rejection in case of timeout.\n\n**Kind**: static property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"PromiseController.ResetError\"></a>\n\n#### PromiseController.ResetError : [<code>ResetError</code>](#PromiseController.ResetError)\nError for rejection in case of call `.reset()` while promise is pending.\n\n**Kind**: static property of [<code>PromiseController</code>](#PromiseController)  \n<a name=\"Options\"></a>\n\n### Options : <code>Object</code>\n**Kind**: global typedef  \n**Properties**\n\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| [timeout] | <code>Number</code> | <code>0</code> | Timeout in ms after that promise will be rejected automatically. |\n| [timeoutReason] | <code>String</code> \\| <code>function</code> |  | Rejection reason for timeout. Promise will be rejected with [TimeoutError](#PromiseController.TimeoutError) and this message. The message can contain placeholder `{timeout}` for actual timeout value. If timeoutReason is a function, it will be evaluated and returned value will be used as message. |\n| [resetReason] | <code>String</code> \\| <code>function</code> |  | Rejection reason used when `.reset()` is called while promise is pending. Promise will be rejected with [ResetError](#PromiseController.ResetError) and this message. If resetReason is a function, it will be evaluated and returned value will be used as message. |\n\n## Related projects\n* [event-to-promise](https://github.com/JsCommunity/event-to-promise)\n* [promise-events](https://github.com/yanickrochon/promise-events)\n\n## License\nMIT @ [Vitaliy Potapov](https://github.com/vitalets)\n","readmeFilename":"README.md"}