open-index/open-npm huggingface dataset:
npm package: @promises/_curry
Description: Curry is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_curry
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_curry)
[![Version](https://img.shields.io/npm/v/@promises/_curry.svg)](https://www.npmjs.com/package/@promises/_curry)
[![MIT License](https://img.shields.io/npm/l/@promises/_curry.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_curry.svg)](https://bundlephobia.com/result?p=@promises/_curry)

**Curry is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_curry
```
```typescript
import {
 __,
 default as _curry
} from '@promises/_curry';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_keys
Description: Keys is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.3.0
Deprecated: Use @pakal/keys instead.


# @promises/_keys
[![Source Code](https://img.shields.io/badge/%3C/%3E-source--code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_keys)
[![Version](https://img.shields.io/npm/v/@promises/_keys.svg)](https://www.npmjs.com/package/@promises/_keys)
[![MIT License](https://img.shields.io/npm/l/@promises/_keys.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)

**[Keys](https://github.com/yisraelx/promises/blob/master/modules/_keys) is a internal package from [Promises](https://github.com/yisraelx/promises) library**

## Use
```sh
$ npm install --save @promises/_keys 
```
```ts
 import keys from '@promises/_keys';
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/compose
Description: Compose is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/compose
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/compose)
[![Version](https://img.shields.io/npm/v/@promises/compose.svg)](https://www.npmjs.com/package/@promises/compose)
[![MIT License](https://img.shields.io/npm/l/@promises/compose.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/compose.svg)](https://bundlephobia.com/result?p=@promises/compose)

**Compose is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/compose
```
```typescript
import {
 default as compose
} from '@promises/compose';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/compose/bundle.umd.min.js"></script>
```
```typescript
let {
 compose
} = P;
```


**Examples**
```typescript
 let prefix = (str: string) => Promise.resolve(`_${str}`);
 let toUpperCase = (str: string) => String.prototype.toUpperCase.call(str);
 let method = compose(prefix, toUpperCase);

 method('some').then((result: string) => {
     console.log(result); // => '_SOME'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/compose
```
```typescript
import Promises from '@promises/core';
import '@promises/compose/add';
```
*Or*
```typescript
import Promises from '@promises/compose/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/compose/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let prefix = (str: string) => `_${str}`;
 let toUpperCase = (str: string) => String.prototype.toUpperCase.call(str);
 let method = Promises.compose(prefix, toUpperCase);

 method('some').then((result: string) => {
     console.log(result); // => '_SOME'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/core
Description: Core is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/core
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/core)
[![Version](https://img.shields.io/npm/v/@promises/core.svg)](https://www.npmjs.com/package/@promises/core)
[![MIT License](https://img.shields.io/npm/l/@promises/core.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/core.svg)](https://bundlephobia.com/result?p=@promises/core)

**Core is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/core
```
```typescript
import {
 Promises,
 default as Promises
} from '@promises/core';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```





## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/create
Description: Create is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/create
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/create)
[![Version](https://img.shields.io/npm/v/@promises/create.svg)](https://www.npmjs.com/package/@promises/create)
[![MIT License](https://img.shields.io/npm/l/@promises/create.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/create.svg)](https://bundlephobia.com/result?p=@promises/create)

**Create is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/create
```
```typescript
import {
 default as create
} from '@promises/create';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/create/bundle.umd.min.js"></script>
```
```typescript
let {
 create
} = P;
```


**Examples**
```typescript
 let promise: Promise<string> = create<string>((resolve, reject) => {
     resolve('foo');
 });

 promise.then((result: string) => {
     console.log(result); // => 'foo'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/create
```
```typescript
import Promises from '@promises/core';
import '@promises/create/add';
```
*Or*
```typescript
import Promises from '@promises/create/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/create/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let promises: Promises<string> = Promises.create<string>((resolve, reject) => {
     resolve('foo');
 });

 promises.then((result: string) => {
     console.log(result); // => 'foo'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/delay
Description: Delay is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/delay
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/delay)
[![Version](https://img.shields.io/npm/v/@promises/delay.svg)](https://www.npmjs.com/package/@promises/delay)
[![MIT License](https://img.shields.io/npm/l/@promises/delay.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/delay.svg)](https://bundlephobia.com/result?p=@promises/delay)

**Delay is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/delay
```
```typescript
import {
 default as delay
} from '@promises/delay';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/delay/bundle.umd.min.js"></script>
```
```typescript
let {
 delay
} = P;
```


**Examples**
```typescript
 delay(3000).then(() => {
   console.log('timeout'); // => 'timeout'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/delay
```
```typescript
import Promises from '@promises/core';
import '@promises/delay/add';
```
*Or*
```typescript
import Promises from '@promises/delay/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/delay/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 Promises.delay(3000).then(() => {
   console.log('timeout'); // => 'timeout'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/do-while-parallel
Description: Do While Parallel is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/do-while-parallel
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/do-while-parallel)
[![Version](https://img.shields.io/npm/v/@promises/do-while-parallel.svg)](https://www.npmjs.com/package/@promises/do-while-parallel)
[![MIT License](https://img.shields.io/npm/l/@promises/do-while-parallel.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/do-while-parallel.svg)](https://bundlephobia.com/result?p=@promises/do-while-parallel)

**Do While Parallel is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/do-while-parallel
```
```typescript
import {
 default as doWhileParallel
} from '@promises/do-while-parallel';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/do-while-parallel/bundle.umd.min.js"></script>
```
```typescript
let {
 doWhileParallel
} = P;
```


**Examples**
```typescript
 let index: number = 0;

 whileParallel(() => {
   console.log(`test ${index}`);
   return index++ < 3;
 }, () => {
   let thisIndex = index;
   return timeout((resolve) => {
    console.log(`iteratee ${thisIndex}`);
    resolve();
   }, 4 - index);
 }).then(() => {
   console.log('completed');
 });

 // => 'test 0'
 // => 'test 1'
 // => 'test 2'
 // => 'test 3'
 // => 'iteratee 3'
 // => 'iteratee 2'
 // => 'iteratee 1'
 // => 'iteratee 0'
 // => 'completed'
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/do-while-parallel
```
```typescript
import Promises from '@promises/core';
import '@promises/do-while-parallel/add';
```
*Or*
```typescript
import Promises from '@promises/do-while-parallel/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/do-while-parallel/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
let index: number = 0;
Promises.whileParallel(() => {
 console.log(`test ${index}`);
 return index++ < 3;
}, () => {
 let thisIndex = index;
 return Promises.timeout((resolve) => {
  console.log(`iteratee ${thisIndex}`);
  resolve();
 }, 4 - index);
}).then(() => {
 console.log('completed');
});
// => 'test 0'
// => 'test 1'
// => 'test 2'
// => 'test 3'
// => 'iteratee 3'
// => 'iteratee 2'
// => 'iteratee 1'
// => 'iteratee 0'
// => 'completed'
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/do-while-series
Description: Do While Series is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/do-while-series
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/do-while-series)
[![Version](https://img.shields.io/npm/v/@promises/do-while-series.svg)](https://www.npmjs.com/package/@promises/do-while-series)
[![MIT License](https://img.shields.io/npm/l/@promises/do-while-series.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/do-while-series.svg)](https://bundlephobia.com/result?p=@promises/do-while-series)

**Do While Series is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/do-while-series
```
```typescript
import {
 default as doWhileSeries
} from '@promises/do-while-series';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/do-while-series/bundle.umd.min.js"></script>
```
```typescript
let {
 doWhileSeries
} = P;
```


**Examples**
```typescript
 let index: number = 0;

 doWhileSeries(() => {
   console.log(`test ${index}`);
   return index++ < 3;
 }, () => timeout((resolve) => {
   console.log(`iteratee ${index}`);
   resolve();
 }, 4 - index)).then(() => {
   console.log('completed');
 });

 // => 'iteratee 0'
 // => 'test 0'
 // => 'iteratee 1'
 // => 'test 1'
 // => 'iteratee 2'
 // => 'test 2'
 // => 'iteratee 3'
 // => 'test 3'
 // => 'completed'
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/do-while-series
```
```typescript
import Promises from '@promises/core';
import '@promises/do-while-series/add';
```
*Or*
```typescript
import Promises from '@promises/do-while-series/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/do-while-series/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
let index: number = 0;
Promises.doWhileSeries(() => {
 console.log(`test ${index}`);
 return index++ < 3;
}, () => Promises.timeout((resolve) => {
 console.log(`iteratee ${index}`);
 resolve();
}, 4 - index)).then(() => {
 console.log('completed');
});
// => 'iteratee 0'
// => 'test 0'
// => 'iteratee 1'
// => 'test 1'
// => 'iteratee 2'
// => 'test 2'
// => 'iteratee 3'
// => 'test 3'
// => 'completed'
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/error
Description: Error is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/error
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/error)
[![Version](https://img.shields.io/npm/v/@promises/error.svg)](https://www.npmjs.com/package/@promises/error)
[![MIT License](https://img.shields.io/npm/l/@promises/error.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/error.svg)](https://bundlephobia.com/result?p=@promises/error)

**Error is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/error
```
```typescript
import {
 default as error
} from '@promises/error';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/error/bundle.umd.min.js"></script>
```
```typescript
let {
 error
} = P;
```


**Examples**
```typescript
 let promise: Promise<string> = Promise.reject<string>('foo');

 error(promise, 'bar').catch((error: string) => {
   console.log(error); // => 'bar'
 });
```
```typescript
 let promise: Promise<string> = Promise.resolve<string>('foo');

 error(promise, 'bar').catch((error: string) => {
   console.log(error); // => 'bar'
 });
```


### Functional programming

**Module**
```sh
$ npm install --save @promises/error
```
```typescript
import {
 __,
 default as error
} from '@promises/error/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/error/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 error
} = PF;
```


**Examples**
```typescript
 let promise: Promise<string> = Promise.reject<string>('foo');

 error('bar')()(promise).catch((error: string) => {
   console.log(error); // => 'bar'
 });
```
```typescript
 let promise: Promise<string> = Promise.resolve<string>('foo');

 error('bar', promise).catch((error: string) => {
   console.log(error); // => 'bar'
 });
```


### Wrapper

**Module**
```sh
$ npm install --save @promises/error
```
```typescript
import Promises from '@promises/core';
import '@promises/error/add';
```
*Or*
```typescript
import Promises from '@promises/error/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/error/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let promises: Promises<string> = Promises.reject<string>('foo').error('bar');
 promises.catch((error: string) => {
   console.log(error); // => 'bar'
 });,

 let promises: Promises<string> = Promises.resolve<string>('foo').error('bar');
 promises.catch((error: string) => {
   console.log(error); // => 'bar'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/every-series
Description: Every Series is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/every-series
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/every-series)
[![Version](https://img.shields.io/npm/v/@promises/every-series.svg)](https://www.npmjs.com/package/@promises/every-series)
[![MIT License](https://img.shields.io/npm/l/@promises/every-series.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/every-series.svg)](https://bundlephobia.com/result?p=@promises/every-series)

**Every Series is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/every-series
```
```typescript
import {
 default as everySeries
} from '@promises/every-series';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/every-series/bundle.umd.min.js"></script>
```
```typescript
let {
 everySeries
} = P;
```


**Examples**
```typescript
 let comparator = (value: any) => {
     return Promise.resolve(Boolean(value));
 };

 let array: any[] = ['foo', true, Promise.resolve(-1)];

 everySeries(array, comparator).then((result: boolean)=>{
     console.log(result); // result => true
 });
```


### Functional programming

**Module**
```sh
$ npm install --save @promises/every-series
```
```typescript
import {
 __,
 default as everySeries
} from '@promises/every-series/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/every-series/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 everySeries
} = PF;
```


**Examples**
```typescript
 let comparator = (value: any) => {
     return Promise.resolve(Boolean(value))
 };

 let array: any[] = [true, 1, Promise.resolve(null), 'yes'];

 everySeries(comparator)(array).then((result: boolean)=>{
     console.log(result) // result => false
 });
```


### Wrapper

**Module**
```sh
$ npm install --save @promises/every-series
```
```typescript
import Promises from '@promises/core';
import '@promises/every-series/add';
```
*Or*
```typescript
import Promises from '@promises/every-series/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/every-series/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let comparator = (value) => {
     return Promises.resolve(Boolean(value));
 };

 let array: any[] = ['foo', true, Promises.resolve(-1)];
 let promises: Promises<any[]> = Promises.resolve(array);

 promises.everySeries(comparator).then((result: boolean)=>{
     console.log(result); // result => true
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/exec
Description: Exec is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/exec
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/exec)
[![Version](https://img.shields.io/npm/v/@promises/exec.svg)](https://www.npmjs.com/package/@promises/exec)
[![MIT License](https://img.shields.io/npm/l/@promises/exec.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/exec.svg)](https://bundlephobia.com/result?p=@promises/exec)

**Exec is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/exec
```
```typescript
import {
 default as exec
} from '@promises/exec';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/exec/bundle.umd.min.js"></script>
```
```typescript
let {
 exec
} = P;
```


**Examples**
```typescript
 let foo = () => {
     return 'bar';
 };

 exec(foo).then((result: string) => {
     console.log(result); // => 'bar'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/exec
```
```typescript
import Promises from '@promises/core';
import '@promises/exec/add';
```
*Or*
```typescript
import Promises from '@promises/exec/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/exec/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let foo = () => {
     return 'bar';
 };

 Promises.exec(foo).then((result: string) => {
     console.log(result); // => 'bar'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/filter-series
Description: Filter Series is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/filter-series
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/filter-series)
[![Version](https://img.shields.io/npm/v/@promises/filter-series.svg)](https://www.npmjs.com/package/@promises/filter-series)
[![MIT License](https://img.shields.io/npm/l/@promises/filter-series.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/filter-series.svg)](https://bundlephobia.com/result?p=@promises/filter-series)

**Filter Series is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/filter-series
```
```typescript
import {
 default as filterSeries
} from '@promises/filter-series';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/filter-series/bundle.umd.min.js"></script>
```
```typescript
let {
 filterSeries
} = P;
```


**Examples**
```typescript
 let comparator = (value: number) => {
     return value % 2 === 0;
 };

 let array = [0, 1, 2, 3];

 filterSeries(array, comparator).then((result: number[])=>{
     console.log(result); // [0,2]
 });
```


### Functional programming

**Module**
```sh
$ npm install --save @promises/filter-series
```
```typescript
import {
 __,
 default as filterSeries
} from '@promises/filter-series/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/filter-series/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 filterSeries
} = PF;
```


**Examples**
```typescript
 let comparator = (value: number) => {
     return value % 2 === 0;
 };

 let array = Array.from({length:5}, (value, index) => index);

 filterSeries(comparator)(array).then((result: number[])=>{
     console.log(result); // result => [0, 2, 4]
 });
```


### Wrapper

**Module**
```sh
$ npm install --save @promises/filter-series
```
```typescript
import Promises from '@promises/core';
import '@promises/filter-series/add';
```
*Or*
```typescript
import Promises from '@promises/filter-series/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/filter-series/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let comparator = (value) => {
     return value % 2 === 0;
 };

 let array = [0, 1, 2, 3];
 let promises: Promises<number[]> = Promises.resolve(array);

 promises.filterSeries(comparator).then((result: number[])=>{
     console.log(result); // [0,2]
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/finally
Description: Finally is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/finally
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/finally)
[![Version](https://img.shields.io/npm/v/@promises/finally.svg)](https://www.npmjs.com/package/@promises/finally)
[![MIT License](https://img.shields.io/npm/l/@promises/finally.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/finally.svg)](https://bundlephobia.com/result?p=@promises/finally)

**Finally is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/finally
```
```typescript
import {
 default as finally
} from '@promises/finally';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/finally/bundle.umd.min.js"></script>
```
```typescript
let {
 finally
} = P;
```


**Examples**
```typescript
 let promise = Promise.resolve('foo');

 finally(promise, () => {
     console.log('done'); // => 'done'
 });
```
```typescript
 let promise = Promise.reject('foo');

 finally(promise, () => {
     console.log('done'); // => 'done'
 });
```


### Functional programming

**Module**
```sh
$ npm install --save @promises/finally
```
```typescript
import {
 __,
 default as finally
} from '@promises/finally/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/finally/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 finally
} = PF;
```


**Examples**
```typescript
 let promise = Promise.resolve('foo');

 finally(() => {
     console.log('done'); // => 'done'
 }, promise);
```
```typescript
 let promise = Promise.reject('foo');

 finally(() => {
     console.log('done'); // => 'done'
 })(promise);
```


### Wrapper

**Module**
```sh
$ npm install --save @promises/finally
```
```typescript
import Promises from '@promises/core';
import '@promises/finally/add';
```
*Or*
```typescript
import Promises from '@promises/finally/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/finally/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let promises = Promises.resolve('foo');

 promises.finally(() => {
     console.log('done'); // => 'done'
 });,

 let promises = Promises.reject('foo');

 promises.finally(() => {
     console.log('done'); // => 'done'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/forever
Description: Forever is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/forever
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/forever)
[![Version](https://img.shields.io/npm/v/@promises/forever.svg)](https://www.npmjs.com/package/@promises/forever)
[![MIT License](https://img.shields.io/npm/l/@promises/forever.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/forever.svg)](https://bundlephobia.com/result?p=@promises/forever)

**Forever is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/forever
```
```typescript
import {
 default as forever
} from '@promises/forever';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/forever/bundle.umd.min.js"></script>
```
```typescript
let {
 forever
} = P;
```


**Examples**
```typescript
 forever((count: number) => new Promise((resolve, reject) => {
  setImmediate(() => {
   count >= 5 ? reject('foo') : resolve(++count);
  });
 }), 0).catch((error: string) => {
  console.log(error); // error => 'reject'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/forever
```
```typescript
import Promises from '@promises/core';
import '@promises/forever/add';
```
*Or*
```typescript
import Promises from '@promises/forever/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/forever/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
Promises.forever((count: number) => new Promise((resolve, reject) => {
 setImmediate(() => {
  count >= 5 ? reject('foo') : resolve(++count);
 });
}), 0).catch((error: string) => {
 console.log(error) // error => 'reject'
});
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/from-callback
Description: From Callback is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/from-callback
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/from-callback)
[![Version](https://img.shields.io/npm/v/@promises/from-callback.svg)](https://www.npmjs.com/package/@promises/from-callback)
[![MIT License](https://img.shields.io/npm/l/@promises/from-callback.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/from-callback.svg)](https://bundlephobia.com/result?p=@promises/from-callback)

**From Callback is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/from-callback
```
```typescript
import {
 default as fromCallback
} from '@promises/from-callback';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/from-callback/bundle.umd.min.js"></script>
```
```typescript
let {
 fromCallback
} = P;
```


**Examples**
```typescript
 fromCallback<string[]>((callback) => {
     fs.readdir(process.cwd(), callback);
 }).then((result: string[]) => {
     console.log(result);
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/from-callback
```
```typescript
import Promises from '@promises/core';
import '@promises/from-callback/add';
```
*Or*
```typescript
import Promises from '@promises/from-callback/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/from-callback/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let readDir = fs.readdir.bind(null, process.cwd());
 Promises.fromCallback<string[]>(readDir).then((result: string[]) => {
     console.log(result);
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/from-event
Description: From Event is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/from-event
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/from-event)
[![Version](https://img.shields.io/npm/v/@promises/from-event.svg)](https://www.npmjs.com/package/@promises/from-event)
[![MIT License](https://img.shields.io/npm/l/@promises/from-event.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/from-event.svg)](https://bundlephobia.com/result?p=@promises/from-event)

**From Event is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/from-event
```
```typescript
import {
 default as fromEvent
} from '@promises/from-event';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/from-event/bundle.umd.min.js"></script>
```
```typescript
let {
 fromEvent
} = P;
```


**Examples**
```typescript
 let emitter: EventEmitter = new EventEmitter();

 Promise.race([
  fromEvent(emitter, 'foo'),
  fromEvent(emitter, 'error', {reject: true})
 ]).catch((error: string) => {
  console.log(error); // error => 'some error'
 });

 emitter.emit('error', 'some error');
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/from-event
```
```typescript
import Promises from '@promises/core';
import '@promises/from-event/add';
```
*Or*
```typescript
import Promises from '@promises/from-event/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/from-event/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
let emitter: EventEmitter = new EventEmitter()
Promises.fromEvent(emitter, 'foo').then((data: string) => {
 console.log(data); // data => 'bar'
});

emitter.emit('foo', 'bar');
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/from-observable
Description: From Observable is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/from-observable
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/from-observable)
[![Version](https://img.shields.io/npm/v/@promises/from-observable.svg)](https://www.npmjs.com/package/@promises/from-observable)
[![MIT License](https://img.shields.io/npm/l/@promises/from-observable.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/from-observable.svg)](https://bundlephobia.com/result?p=@promises/from-observable)

**From Observable is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/from-observable
```
```typescript
import {
 default as fromObservable
} from '@promises/from-observable';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/from-observable/bundle.umd.min.js"></script>
```
```typescript
let {
 fromObservable
} = P;
```


**Examples**
```typescript
 let observable: Observable<string> = new Observable<string>((observer: Subscriber<T>) => {
     observer.next('foo');
     observer.complete();
 });

 let promise: Promise<string> = fromObservable<string>(observable);

 promise.then((result: string) => {
     console.log(result); // => 'foo'
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/from-observable
```
```typescript
import Promises from '@promises/core';
import '@promises/from-observable/add';
```
*Or*
```typescript
import Promises from '@promises/from-observable/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/from-observable/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let observable: Observable<string> = new Observable<string>((observer: Subscriber<T>) => {
     observer.next('foo');
     observer.complete();
 });

 let promises: Promises<string> = Promises.fromObservable<string>(observable);

 promises.then((result: string) => {
     console.log(result); // => 'foo'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/interfaces
Description: Interfaces is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/interfaces
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/interfaces)
[![Version](https://img.shields.io/npm/v/@promises/interfaces.svg)](https://www.npmjs.com/package/@promises/interfaces)
[![MIT License](https://img.shields.io/npm/l/@promises/interfaces.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/interfaces.svg)](https://bundlephobia.com/result?p=@promises/interfaces)

**Interfaces is package from Promises library**

## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/is-promise
Description: Is Promise is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/is-promise
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/is-promise)
[![Version](https://img.shields.io/npm/v/@promises/is-promise.svg)](https://www.npmjs.com/package/@promises/is-promise)
[![MIT License](https://img.shields.io/npm/l/@promises/is-promise.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/is-promise.svg)](https://bundlephobia.com/result?p=@promises/is-promise)

**Is Promise is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/is-promise
```
```typescript
import {
 default as isPromise
} from '@promises/is-promise';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/is-promise/bundle.umd.min.js"></script>
```
```typescript
let {
 isPromise
} = P;
```


**Examples**
```typescript
 let promise: Promise<string> = Promise.resolve('foo');

 console.log(isPromise(promises)); // => true
 console.log(isPromise('foo')); // => false
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/is-promise
```
```typescript
import Promises from '@promises/core';
import '@promises/is-promise/add';
```
*Or*
```typescript
import Promises from '@promises/is-promise/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/is-promise/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let promises: Promises<string> = Promises.resolve('foo');
 console.log(Promises.isPromise(promises)); // => true
 console.log(Promises.isPromise('foo')); // => false
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/keys
Description: Keys is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/keys
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/keys)
[![Version](https://img.shields.io/npm/v/@promises/keys.svg)](https://www.npmjs.com/package/@promises/keys)
[![MIT License](https://img.shields.io/npm/l/@promises/keys.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/keys.svg)](https://bundlephobia.com/result?p=@promises/keys)

**Keys is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/keys
```
```typescript
import {
 default as keys
} from '@promises/keys';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/keys/bundle.umd.min.js"></script>
```
```typescript
let {
 keys
} = P;
```


**Examples**
```typescript
 let object: {[key: string]: string} = { foo: 'bar'};
 let promise: Promise<{[key: string]: string}> = Promise.resolve(object);

 keys(promises).then(keys: string[]) => {
     console.log(keys); // => ['foo']
 });
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/keys
```
```typescript
import Promises from '@promises/core';
import '@promises/keys/add';
```
*Or*
```typescript
import Promises from '@promises/keys/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/keys/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let array: number[] = [0, 1, 2];
 let promises: Promises<number[]> = Promises.resolve(array);

 promises.keys().then((keys: string[]) => {
     console.log(keys); // => ['0', '1', '2']
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/next
Description: Next is package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/next
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/next)
[![Version](https://img.shields.io/npm/v/@promises/next.svg)](https://www.npmjs.com/package/@promises/next)
[![MIT License](https://img.shields.io/npm/l/@promises/next.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/next.svg)](https://bundlephobia.com/result?p=@promises/next)

**Next is package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/next
```
```typescript
import {
 default as next
} from '@promises/next';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/next/bundle.umd.min.js"></script>
```
```typescript
let {
 next
} = P;
```


**Examples**
```typescript
 let promise: Promise<string> = Promise.resolve<string>('foo');

 next(promise, 'bar').then((result: string) => {
   console.log(result); // => 'bar'
 });
```
```typescript
 let promise: Promise<string> = Promise.reject<string>('foo');

 next(promise, 'bar').then((result: string) => {
   console.log(result); // => 'bar'
 });
```


### Functional programming

**Module**
```sh
$ npm install --save @promises/next
```
```typescript
import {
 __,
 default as next
} from '@promises/next/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/next/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 next
} = PF;
```


**Examples**
```typescript
 let promise: Promise<string> = Promise.resolve<string>('foo');

 next('bar', promise).then((result: string) => {
   console.log(result); // => 'bar'
 });
```
```typescript
 let promise: Promise<string> = Promise.reject<string>('foo');

 next('bar', promise).then((result: string) => {
   console.log(result); // => 'bar'
 });
```


### Wrapper

**Module**
```sh
$ npm install --save @promises/next
```
```typescript
import Promises from '@promises/core';
import '@promises/next/add';
```
*Or*
```typescript
import Promises from '@promises/next/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/next/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```


**Examples**
```typescript
 let promises: Promises<string> = Promises.resolve<string>('foo').next('bar');
 promises.then((result: string) => {
   console.log(result); // => 'bar'
 });,

 let promises: Promises<string> = Promises.reject<string>('foo').next('bar');
 promises.then((result: string) => {
   console.log(result); // => 'bar'
 });
```


## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).