# time-limit-promise [![Build Status](https://api.travis-ci.org/inikulin/time-limit-promise.svg)](https://travis-ci.org/inikulin/time-limit-promise) *Fulfill long runinng promises on timeout.* Unlike other implementations on npm it has some nice extra features: - You can both reject and resolve promises on timeout - You can provide custom value with which promise will be rejected or resolved on timeout - Unrefs promise timer, so it will not block your app from exit. - Uses `Promise` implementation of the passed promise: no external implementation dependencies, no global `Promise` dependencies ## Install ``` npm install time-limit-promise ``` ## Usage ```js const timeLimit = require('time-limit-promise'); const fetch = require('node-fetch'); var fetchPromise = fetch('https://github.com/inikulin'); timeLimit(fetchPromise, 50).then(res => { // If `fetchPromise` will be fulfilled within 50ms // time limited promise will be fullfilled as well. // Otherwise, it will be resolved with the `undefined` value. }); timeLimit(fetchPromise, 50, { resolveWith: 'no content' }).then(res => { // Same as above, but on timeout it will // be resolved with the `no-content` value. console.log(res); // > no-content }); timeLimit(fetchPromise, 50, { rejectWith: new Error('timeout') }).catch(err => { // Same as above, but on timeout it will // be rejected with the provided error. console.log(err.message); // > timeout }); ``` ## Author [Ivan Nikulin](https://github.com/inikulin) (ifaaan@gmail.com)