UNPKG

50.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.js"],"names":["all","asCallback","catchPlus","delay","disposer","using","ignoreErrors","join","lastly","reflect","settle","some","tap","timeout","unpromisify","Promise","reject","resolve","Error","_endsWith","str","suffix","pos","length","indexOf","_isArray","Array","isArray","value","_isLength","Infinity","Math","floor","_isArrayLike","_iteratorSymbol","Symbol","iterator","_isIterable","_once","result","fn","apply","arguments","_noop","_forArray","array","iteratee","i","_forIn","object","key","_forIterable","iterable","current","next","done","hasOwnProperty","Object","prototype","_forOwn","call","_forEach","collection","_map","item","isPromise","then","_makeAsyncIterator","promises","cb","mainPromise","promise","_wrap","wrapCall","arg","thisArg","error","wrapApply","args","_all","mapFn","count","onFulfillment0","tmp","onFulfillment","onRejection","reason","nodeify","Cancel","message","defineProperty","enumerable","_cancelTokenTag","_toStringTagSymbol","toStringTag","CancelToken","cancel","token","cancel_","tokens","_executor","undefined","_listeners","push","executor","_promise","_reason","_resolve","cancelOnce","listeners","listener","race","c","cancelable","target","name","descriptor","cancelableWrapper","isCancelToken","source","cancellable","_isProgrammerError","ReferenceError","SyntaxError","TypeError","_matchError","predicate","n","predicates","defer","resolve_","reject_","ms","setTimeout","Resource","d","p","nResources","handler","resources","spread","dispose","leftToProcess","onSettle","onFailure","resource","values","onProviderFailure_","onProviderSettle","onProviderFailure","makeAsyncIterator","asyncIterator","forArray","forEach","forIn","forIterable","forOwn","fromCallback","_ignoreErrorsCb","_makeEventAdder","$cancelToken","emitter","arrayArg","add","addEventListener","addListener","on","remove","removeEventListener","removeListener","off","eventsAndListeners","clean","event","fromEvent","opts","fromEvents","successEvents","errorEvents","finally","_setFunctionNameAndLength","_defineProperties","defineProperties","f","configurable","_","promisify","context","_DEFAULT_PALL_MAPPER","promisifyAll","obj","mapper","newName","FN_FALSE","FN_TRUE","_reflectResolution","__proto__","isFulfilled","isPending","isRejected","isResolved","_reflectRejection","_some","errors","acceptableErrors","onResolved","onRejected","forward","TimeoutError","handle","clearTimeout","attempt","try"],"mappings":"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","file":"index.js","sourcesContent":["import { BaseError } from 'make-error'\n\n// ===================================================================\n\nif (\n typeof Promise !== 'function' ||\n typeof Promise.reject !== 'function' ||\n typeof Promise.resolve !== 'function'\n) {\n throw new Error('a standard Promise implementation is required (https://github.com/JsCommunity/promise-toolbox#usage)')\n}\n\n// ===================================================================\n\nconst _endsWith = (str, suffix, pos = str.length) => {\n pos -= suffix.length\n return pos >= 0 && str.indexOf(suffix, pos) === pos\n}\n\nconst _isArray = Array.isArray || (value => value instanceof Array)\n\nconst _isLength = value => (\n typeof value === 'number' &&\n value >= 0 && value < Infinity &&\n Math.floor(value) === value\n)\n\nconst _isArrayLike = value => (\n value &&\n typeof value !== 'function' &&\n _isLength(value.length)\n)\n\nconst _iteratorSymbol = (\n (typeof Symbol === 'function' && Symbol.iterator) ||\n '@@iterator'\n)\n\nconst _isIterable = value => value && typeof value[_iteratorSymbol] === 'function'\n\nconst _once = fn => {\n let result\n return function () {\n if (fn) {\n result = fn.apply(this, arguments)\n fn = null\n }\n return result\n }\n}\n\nconst _noop = () => {}\n\n// -------------------------------------------------------------------\n\nconst _forArray = (array, iteratee) => {\n const { length } = array\n for (let i = 0; i < length; ++i) {\n iteratee(array[i], i, array)\n }\n}\n\nconst _forIn = (object, iteratee) => {\n for (const key in object) {\n iteratee(object[key], key, object)\n }\n}\n\nconst _forIterable = (iterable, iteratee) => {\n const iterator = iterable[Symbol.iterator]()\n\n let current\n while (!(current = iterator.next()).done) {\n iteratee(current.value, null, iterable)\n }\n}\n\nconst { hasOwnProperty } = Object.prototype\nconst _forOwn = (object, iteratee) => {\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n iteratee(object[key], key, object)\n }\n }\n}\n\nconst _forEach = (collection, iteratee) => _isArray(collection)\n ? _forArray(collection, iteratee)\n : _isIterable(collection)\n ? _forIterable(collection, iteratee)\n : _isArrayLike(collection)\n ? _forArray(collection, iteratee)\n : _forOwn(collection, iteratee)\n\nconst _map = (collection, iteratee) => {\n const result = _isArrayLike(collection)\n ? new Array(collection.length)\n : {}\n\n // If iteratee is not a function, simply returns the new container.\n if (iteratee) {\n _forEach(collection, (item, key) => {\n result[key] = iteratee(item, key, collection)\n })\n }\n\n return result\n}\n\n// ===================================================================\n\nexport const isPromise = value => (\n value != null &&\n typeof value.then === 'function'\n)\n\n// -------------------------------------------------------------------\n\nconst _makeAsyncIterator = iterator => (promises, cb) => {\n let mainPromise = Promise.resolve()\n\n iterator(promises, (promise, key) => {\n mainPromise = isPromise(promise)\n ? mainPromise.then(() => promise.then(value => cb(value, key, promises)))\n : mainPromise.then(() => cb(promise, key, promises))\n })\n\n return mainPromise\n}\n\nconst _wrap = value => isPromise(value)\n ? value\n : Promise.resolve(value)\n\nexport const wrapCall = (fn, arg, thisArg) => {\n try {\n return _wrap(fn.call(thisArg, arg))\n } catch (error) {\n return Promise.reject(error)\n }\n}\n\nexport const wrapApply = (fn, args, thisArg) => {\n try {\n return _wrap(fn.apply(thisArg, args))\n } catch (error) {\n return Promise.reject(error)\n }\n}\n\n// ===================================================================\n\nconst _all = (promises, mapFn) => new Promise((resolve, reject) => {\n // mapFn may be undefined but it's okay :)\n let result = _map(promises, mapFn)\n\n let count = 1\n const onFulfillment0 = () => {\n if (--count === 0) {\n const tmp = result\n result = null\n resolve(tmp)\n }\n }\n\n const onFulfillment = (value, key) => {\n if (!result) {\n return\n }\n\n result[key] = value\n onFulfillment0()\n }\n\n const onRejection = reason => {\n if (!result) {\n return\n }\n\n result = null\n reject(reason)\n }\n\n _forEach(mapFn ? result : promises, (promise, key) => {\n ++count\n\n if (isPromise(promise)) {\n promise.then(\n value => onFulfillment(value, key),\n onRejection\n )\n } else {\n onFulfillment(promise, key)\n }\n })\n onFulfillment0()\n})\n\n// Returns a promise which resolves when all the promises in a\n// collection have resolved or rejects with the reason of the first\n// promise that rejects.\n//\n// Optionally a function can be provided to map all items in the\n// collection before waiting for completion.\n//\n// Usage: promises::all([ mapFn ])\nexport function all (mapFn) {\n return _wrap(this).then(promises => _all(promises, mapFn))\n}\n\n// -------------------------------------------------------------------\n\n// Usage: promise::asCallback(cb)\nexport function asCallback (cb) {\n // cb can be undefined.\n if (cb) {\n this.then(\n value => cb(null, value),\n error => cb(error)\n ).then(null, _noop)\n }\n\n return this\n}\n\nexport { asCallback as nodeify }\n\n// -------------------------------------------------------------------\n\nexport class Cancel {\n constructor (message = 'this action has been canceled') {\n Object.defineProperty(this, 'message', {\n enumerable: true,\n value: message\n })\n }\n\n toString () {\n return `Cancel: ${this.message}`\n }\n}\n\nconst _cancelTokenTag = 'CancelToken'\nconst _toStringTagSymbol = (typeof Symbol === 'function' && Symbol.toStringTag) || '@@toStringTag'\n\n// https://github.com/zenparsing/es-cancel-token\n// https://tc39.github.io/proposal-cancelable-promises/\nexport class CancelToken {\n static isCancelToken (value) {\n return (\n value != null &&\n typeof value[_toStringTagSymbol] === 'function' &&\n value[_toStringTagSymbol]() === _cancelTokenTag\n )\n }\n\n // https://github.com/zenparsing/es-cancel-token/issues/3#issuecomment-221173214\n static source () {\n let cancel\n const token = new CancelToken(cancel_ => {\n cancel = cancel_\n })\n return { cancel, token }\n }\n\n static race (tokens, _executor) {\n return new CancelToken(cancel => {\n _forEach(tokens, token => {\n const { reason } = token\n if (reason !== undefined) {\n cancel(reason)\n return false\n }\n\n (token._listeners || (token._listeners = [])).push(cancel)\n })\n if (_executor !== undefined) {\n _executor(cancel)\n }\n })\n }\n\n constructor (executor) {\n this._listeners = null\n this._promise = null\n this._reason = undefined\n this._resolve = null\n\n let cancelOnce = message => {\n cancelOnce = _noop\n\n const reason = this._reason = message instanceof Cancel\n ? message\n : new Cancel(message)\n\n const resolve = this._resolve\n if (resolve !== null) {\n this._resolve = null\n resolve(reason)\n }\n\n // notify sync listeners (for race)\n const listeners = this._listeners\n if (listeners !== null) {\n this._listeners = null\n _forArray(listeners, listener => void listener(reason))\n }\n }\n const cancel = message => cancelOnce(message)\n executor(cancel)\n }\n\n get promise () {\n let promise = this._promise\n if (promise === null) {\n const reason = this._reason\n promise = this._promise = reason !== undefined\n ? Promise.resolve(reason)\n : new Promise(resolve => {\n this._resolve = resolve\n })\n }\n return promise\n }\n\n get reason () {\n return this._reason\n }\n\n get requested () {\n return this._reason !== undefined\n }\n\n fork (executor) {\n if (executor !== undefined) {\n return CancelToken.race([ this ], executor)\n }\n\n let cancel\n const token = CancelToken.race([ this ], c => { cancel = c })\n return { cancel, token }\n }\n\n throwIfRequested () {\n const reason = this._reason\n if (reason !== undefined) {\n throw reason\n }\n }\n\n [_toStringTagSymbol] () {\n return _cancelTokenTag\n }\n}\n\n// Usage:\n//\n// @cancelable\n// async fn (cancelToken, other, args) {\n// if (!cancelToken.requested) {\n// doStuff()\n// }\n//\n// cancelToken.throwIfRequested()\n//\n// doSomeMoreStuff()\n//\n// cancelToken.promise.then(() => {\n// // Do stuff if canceled.\n// })\n//\n// // do other stuff.\n// }\nexport const cancelable = (target, name, descriptor) => {\n const fn = descriptor !== undefined\n ? descriptor.value\n : target\n\n function cancelableWrapper () {\n const { length } = arguments\n if (length !== 0 && CancelToken.isCancelToken(arguments[0])) {\n return fn.apply(this, arguments)\n }\n\n const { cancel, token } = CancelToken.source()\n const args = new Array(length + 1)\n args[0] = token\n for (let i = 0; i < length; ++i) {\n args[i + 1] = arguments[i]\n }\n\n const promise = fn.apply(this, args)\n promise.cancel = cancel\n\n return promise\n }\n\n if (descriptor !== undefined) {\n descriptor.value = cancelableWrapper\n return descriptor\n }\n\n return cancelableWrapper\n}\nexport { cancelable as cancellable } // alternative UK spelling\n\n// -------------------------------------------------------------------\n\nconst _isProgrammerError = reason =>\n reason instanceof ReferenceError ||\n reason instanceof SyntaxError ||\n reason instanceof TypeError\n\nconst _matchError = (predicate, error) => {\n if (typeof predicate === 'function') {\n return (\n predicate === Error ||\n predicate.prototype instanceof Error\n )\n ? error instanceof predicate\n : predicate(error)\n }\n\n if (error != null && typeof predicate === 'object') {\n for (const key in predicate) {\n if (\n hasOwnProperty.call(predicate, key) &&\n error[key] !== predicate[key]\n ) {\n return false\n }\n }\n return true\n }\n}\n\n// Similar to `Promise#catch()` but:\n// - support predicates\n// - do not catch `ReferenceError`, `SyntaxError` or `TypeError`\n// unless they match a predicate because they are usually programmer\n// errors and should be handled separately.\nexport function catchPlus () {\n const n = arguments.length - 1\n\n let cb\n if (\n n < 0 ||\n typeof (cb = arguments[n]) !== 'function'\n ) {\n return this\n }\n\n let predicates\n if (n !== 0) {\n predicates = new Array(n)\n for (let i = 0; i < n; ++i) {\n predicates[i] = arguments[i]\n }\n }\n\n return _wrap(this).then(null, reason => {\n if (predicates !== undefined) {\n for (let i = 0; i < n; ++i) {\n if (_matchError(predicates[i], reason)) {\n return cb(reason)\n }\n }\n } else if (!_isProgrammerError(reason)) {\n return cb(reason)\n }\n\n // Forward error without throwing (perf).\n return this\n })\n}\n\n// -------------------------------------------------------------------\n\n// Discouraged but sometimes necessary way to create a promise.\nexport const defer = () => {\n let resolve, reject\n const promise = new Promise((resolve_, reject_) => { // eslint-disable-line promise/param-names\n resolve = resolve_\n reject = reject_\n })\n\n return {\n promise,\n reject,\n resolve\n }\n}\n\n// -------------------------------------------------------------------\n\n// Usage: promise::delay(ms)\nexport function delay (ms) {\n return isPromise(this)\n ? this.then(value => new Promise(resolve => {\n setTimeout(() => resolve(value), ms)\n }))\n : new Promise(resolve => {\n setTimeout(() => resolve(this), ms)\n })\n}\n\n// -------------------------------------------------------------------\n\nfunction Resource (promise, disposer) {\n this.d = disposer\n this.p = promise\n}\n\n// Usage: promise::disposer(disposer)\nexport function disposer (disposer) {\n return new Resource(this, disposer)\n}\n\n// Usage: using(disposers…, handler)\nexport function using () {\n let nResources = arguments.length - 1\n\n if (nResources < 1) {\n throw new TypeError('using expects at least 2 arguments')\n }\n\n const handler = arguments[nResources]\n\n let resources = arguments[0]\n const spread = nResources > 1 || !_isArray(resources)\n if (spread) {\n resources = new Array(nResources)\n for (let i = 0; i < nResources; ++i) {\n resources[i] = arguments[i]\n }\n } else {\n nResources = resources.length\n }\n\n const dispose = _once((fn, value) => {\n let leftToProcess = nResources\n\n const onSettle = () => {\n if (--leftToProcess === 0) {\n fn(value)\n }\n }\n\n // like Bluebird, on failure to dispose a resource, throw an async error\n const onFailure = reason => {\n setTimeout(() => {\n throw reason\n }, 0)\n }\n\n _forArray(resources, resource => {\n let d\n if (resource != null && typeof (d = resource.d) === 'function') {\n resource.p.then(\n value => wrapCall(d, value).then(onSettle, onFailure),\n onSettle\n )\n\n resource.p = resource.d = null\n } else {\n --leftToProcess\n }\n })\n })\n\n return new Promise((resolve, reject) => {\n const values = new Array(nResources)\n let leftToProcess = nResources\n\n let onProviderFailure_ = reason => {\n onProviderFailure_ = onProviderSettle\n onSettle = () => dispose(reject, reason)\n\n onProviderSettle()\n }\n const onProviderFailure = reason => onProviderFailure_(reason)\n\n const onProviderSettle = () => {\n if (--leftToProcess === 0) {\n onSettle()\n }\n }\n\n let onSettle = () =>\n (spread ? wrapApply : wrapCall)(handler, values, this).then(\n value => dispose(resolve, value),\n reason => dispose(reject, reason)\n )\n\n _forArray(resources, (resource, i) => {\n const p = resource instanceof Resource ? resource.p : resource\n if (p === null) {\n onProviderFailure(new TypeError('resource has already been disposed of'))\n return\n }\n\n p.then(value => {\n values[i] = value\n\n onProviderSettle()\n }, onProviderFailure)\n })\n })\n}\n\n// -------------------------------------------------------------------\n\nexport const makeAsyncIterator = iterator => {\n const asyncIterator = _makeAsyncIterator(iterator)\n\n return function (cb) {\n return _wrap(this)\n .then(promises => asyncIterator(promises, cb))\n .then(_noop) // Resolves to undefined\n }\n}\n\nexport const forArray = makeAsyncIterator(_forArray)\nexport const forEach = makeAsyncIterator(_forEach)\nexport const forIn = makeAsyncIterator(_forIn)\nexport const forIterable = makeAsyncIterator(_forIterable)\nexport const forOwn = makeAsyncIterator(_forOwn)\n\n// -------------------------------------------------------------------\n\n// Usage:\n//\n// fromCallback(cb => fs.readFile('foo.txt', cb))\n// .then(content => {\n// console.log(content)\n// })\nexport const fromCallback = fn => new Promise((resolve, reject) => {\n fn((error, result) => error\n ? reject(error)\n : resolve(result)\n )\n})\n\n// -------------------------------------------------------------------\n\nconst _ignoreErrorsCb = error => {\n if (_isProgrammerError(error)) {\n throw error\n }\n}\n\nexport function ignoreErrors () {\n if (!isPromise(this)) {\n return this\n }\n\n return this.then(null, _ignoreErrorsCb)\n}\n\n// -------------------------------------------------------------------\n\nconst _makeEventAdder = ($cancelToken, emitter, arrayArg) => {\n const add =\n emitter.addEventListener ||\n emitter.addListener ||\n emitter.on\n if (add === undefined) {\n throw new Error('cannot register event listener')\n }\n\n const remove =\n emitter.removeEventListener ||\n emitter.removeListener ||\n emitter.off\n\n const eventsAndListeners = []\n\n let clean = _noop\n if (remove !== undefined) {\n clean = _once(() => {\n for (let i = 0, n = eventsAndListeners.length; i < n; i += 2) {\n remove.call(emitter, eventsAndListeners[i], eventsAndListeners[i + 1])\n }\n })\n $cancelToken.promise.then(clean)\n }\n\n return arrayArg\n ? (event, cb) => {\n function listener () {\n clean()\n const { length } = arguments\n const args = new Array(length)\n for (let i = 0; i < length; ++i) {\n args[i] = arguments[i]\n }\n args.event = event\n cb(args)\n }\n eventsAndListeners.push(event, listener)\n add.call(emitter, event, listener)\n }\n : (event, cb) => {\n const listener = arg => {\n clean()\n cb(arg)\n }\n eventsAndListeners.push(event, listener)\n add.call(emitter, event, listener)\n }\n}\n\nexport const fromEvent = cancelable(\n ($cancelToken, emitter, event, opts = {}) =>\n new Promise((resolve, reject) => {\n const add = _makeEventAdder($cancelToken, emitter, opts.array)\n add(event, resolve)\n if (!opts.ignoreErrors) {\n const { error = 'error' } = opts\n if (error !== event) {\n add(error, reject)\n }\n }\n })\n)\n\nexport const fromEvents = cancelable(\n ($cancelToken, emitter, successEvents, errorEvents = [ 'error' ]) =>\n new Promise((resolve, reject) => {\n const add = _makeEventAdder($cancelToken, emitter, true)\n _forArray(successEvents, event => add(event, resolve))\n _forArray(errorEvents, event => add(event, reject))\n })\n)\n\n// -------------------------------------------------------------------\n\n// Usage: join(p1, ..., pn, cb) or join([p1, ..., pn], cb)\nexport function join () {\n const n = arguments.length - 1\n const cb = arguments[n]\n\n let promises\n if (n === 0) {\n return new Promise(resolve => resolve(cb()))\n } else if (n !== 1) {\n promises = new Array(n)\n for (let i = 0; i < n; ++i) {\n promises[i] = arguments[i]\n }\n } else if (!_isArrayLike(promises = arguments[0])) {\n return _wrap(promises).then(value => cb(value))\n }\n\n return _all(promises).then(args => cb.apply(null, args))\n}\n\n// -------------------------------------------------------------------\n\n// Ponyfill for Promise.finally(cb)\n//\n// Usage: promise::lastly(cb)\nexport function lastly (cb) {\n return _wrap(this).then(\n value => _wrap(cb()).then(() => this),\n reason => _wrap(cb()).then(() => this)\n )\n}\nexport { lastly as finally }\n\n// -------------------------------------------------------------------\n\nconst _setFunctionNameAndLength = (() => {\n const _defineProperties = Object.defineProperties\n\n try {\n const f = _defineProperties(function () {}, {\n length: { value: 2 },\n name: { value: 'foo' }\n })\n\n if (f.length === 2 && f.name === 'foo') {\n return (fn, name, length) => _defineProperties(fn, {\n length: {\n configurable: true,\n value: length\n },\n name: {\n configurable: true,\n value: name\n }\n })\n }\n } catch (_) {}\n\n return fn => fn\n})()\n\n// Usage: promisify(fn, [ context ])\nexport const promisify = (fn, context) => _setFunctionNameAndLength(function () {\n const { length } = arguments\n const args = new Array(length + 1)\n for (let i = 0; i < length; ++i) {\n args[i] = arguments[i]\n }\n\n return new Promise((resolve, reject) => {\n args[length] = (error, result) => error\n ? reject(error)\n : resolve(result)\n\n fn.apply(context || this, args)\n })\n}, fn.name, fn.length && fn.length - 1)\n\nconst _DEFAULT_PALL_MAPPER = name => (\n !(_endsWith(name, 'Sync') || _endsWith(name, 'Async')) &&\n name\n)\n\n// Usage: promisifyAll(obj, [ opts ])\nexport const promisifyAll = (obj, {\n mapper = _DEFAULT_PALL_MAPPER,\n target = {},\n context = obj\n} = {}) => {\n _forIn(obj, (value, name) => {\n let newName\n if (\n typeof value === 'function' &&\n (newName = mapper(name, value, obj))\n ) {\n target[newName] = promisify(value, context)\n }\n })\n\n return target\n}\n\n// -------------------------------------------------------------------\n\nconst FN_FALSE = () => false\nconst FN_TRUE = () => true\n\nconst _reflectResolution = (__proto__ => value => ({\n __proto__: __proto__,\n value: () => value\n}))({\n isFulfilled: FN_TRUE,\n isPending: FN_FALSE,\n isRejected: FN_FALSE,\n isResolved: FN_TRUE,\n reason: () => {\n throw new Error('no reason, the promise has resolved')\n }\n})\n\nconst _reflectRejection = (__proto__ => reason => ({\n __proto__: __proto__,\n reason: () => reason\n}))({\n isFulfilled: FN_FALSE,\n isPending: FN_FALSE,\n isRejected: FN_TRUE,\n isResolved: FN_FALSE,\n value: () => {\n throw new Error('no value, the promise has rejected')\n }\n})\n\n// Returns a promise that is always successful when this promise is\n// settled. Its fulfillment value is an object that implements the\n// PromiseInspection interface and reflects the resolution this\n// promise.\n//\n// Usage: promise::reflect()\nexport function reflect () {\n return _wrap(this).then(\n _reflectResolution,\n _reflectRejection\n )\n}\n\n// -------------------------------------------------------------------\n\n// Given a collection (array or object) which contains promises,\n// return a promise that is fulfilled when all the items in the\n// collection are either fulfilled or rejected.\n//\n// This promise will be fulfilled with a collection (of the same type,\n// array or object) containing promise inspections.\n//\n// Usage: promises::settle()\nexport function settle () {\n return this::all(x => x::reflect())\n}\n\n// -------------------------------------------------------------------\n\nconst _some = (promises, count) => new Promise((resolve, reject) => {\n let values = []\n let errors = []\n\n const onFulfillment = value => {\n if (!values) {\n return\n }\n\n values.push(value)\n if (--count === 0) {\n resolve(values)\n values = errors = null\n }\n }\n\n let acceptableErrors = -count\n const onRejection = reason => {\n if (!values) {\n return\n }\n\n errors.push(reason)\n if (--acceptableErrors === 0) {\n reject(errors)\n values = errors = null\n }\n }\n\n _forEach(promises, promise => {\n ++acceptableErrors\n _wrap(promise).then(onFulfillment, onRejection)\n })\n})\n\n// Usage: promises::some(count)\nexport function some (count) {\n return _wrap(this).then(promises => _some(promises, count))\n}\n\n// -------------------------------------------------------------------\n\nexport function tap (onResolved, onRejected) {\n const forward = () => this\n\n return _wrap(this).then(\n onResolved && (value => _wrap(onResolved(value)).then(forward)),\n onRejected && (reason => _wrap(onRejected(reason)).then(forward))\n )\n}\n\n// -------------------------------------------------------------------\n\nexport class TimeoutError extends BaseError {\n constructor () {\n super('operation timed out')\n }\n}\n\n// Usage: promise::timeout(ms, cb)\nexport function timeout (ms, cb) {\n return new Promise((resolve, reject) => {\n let handle = setTimeout(() => {\n handle = null\n\n if (typeof this.cancel === 'function') {\n this.cancel()\n }\n\n if (cb) {\n try {\n resolve(cb())\n } catch (error) {\n reject(error)\n }\n } else {\n reject(new TimeoutError())\n }\n }, ms)\n\n _wrap(this).then(\n value => {\n handle !== null && clearTimeout(handle)\n resolve(value)\n },\n reason => {\n handle !== null && clearTimeout(handle)\n reject(reason)\n }\n )\n })\n}\n\n// -------------------------------------------------------------------\n\nexport const attempt = fn => new Promise(resolve => resolve(fn()))\nexport { attempt as try }\n\n// -------------------------------------------------------------------\n\n// Usage: fn::unpromisify()\nexport function unpromisify () {\n const fn = this\n return _setFunctionNameAndLength(function () {\n const n = arguments.length - 1\n let cb\n if (\n n < 0 ||\n typeof (cb = arguments[n]) !== 'function'\n ) {\n throw new Error('missing callback')\n }\n\n const args = new Array(n)\n for (let i = 0; i < n; ++i) {\n args[i] = arguments[i]\n }\n\n wrapApply(fn, args, this).then(\n result => cb(null, result),\n reason => cb(reason)\n )\n }, fn.name, fn.length + 1)\n}\n"]}
\No newline at end of file