diff --git a/lib/array.js b/lib/array.js index b4711fdb..0077f262 100644 --- a/lib/array.js +++ b/lib/array.js @@ -16,14 +16,10 @@ const { promisify } = require('util'); // result - const map = (items, fn, done = common.emptiness) => { const isArray = Array.isArray(items); - try { - asyncIter(items) - .parallel(promisify(fn)) - .then(res => done(null, isArray ? res : new items.constructor(res))) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .parallel(promisify(fn)) + .then(res => done(null, isArray ? res : new items.constructor(res))) + .catch(done); }; // Non-blocking synchronous map @@ -44,17 +40,11 @@ const asyncMap = (items, fn, options = {}, done = common.emptiness) => { options = {}; } const isArray = Array.isArray(items); - try { - const iter = asyncIter(items) - .map(promisify(fn)) - .throttle(options.percent, options.min); - const collect = isArray - ? iter.toArray() - : iter.collectTo(items.constructor); - collect.then(res => done(null, res)).catch(done); - } catch (err) { - done(err); - } + const iter = asyncIter(items) + .map(promisify(fn)) + .throttle(options.percent, options.min); + const collect = isArray ? iter.toArray() : iter.collectTo(items.constructor); + collect.then(res => done(null, res)).catch(done); }; // Asynchronous filter (iterate parallel) @@ -76,19 +66,15 @@ const asyncMap = (items, fn, options = {}, done = common.emptiness) => { // ); const filter = (items, fn, done = common.emptiness) => { const isArray = Array.isArray(items); - try { - asyncIter(items) - .parallel(async item => [await promisify(fn)(item), item]) - .then(res => { - const filtered = res - .filter(([predicateResult]) => predicateResult) - .map(([, item]) => item); - done(null, isArray ? filtered : new items.constructor(filtered)); - }) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .parallel(async item => [await promisify(fn)(item), item]) + .then(res => { + const filtered = res + .filter(([predicateResult]) => predicateResult) + .map(([, item]) => item); + done(null, isArray ? filtered : new items.constructor(filtered)); + }) + .catch(done); }; // Asynchronous reduce @@ -110,14 +96,10 @@ const filter = (items, fn, done = common.emptiness) => { // initial - , optional value to be used as first // argument in first iteration const reduce = (items, fn, done = common.emptiness, initial) => { - try { - asyncIter(items) - .reduce((prev, cur) => promisify(fn)(prev, cur), initial) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .reduce((prev, cur) => promisify(fn)(prev, cur), initial) + .then(res => done(null, res)) + .catch(done); }; // Asynchronous reduceRight @@ -139,14 +121,10 @@ const reduce = (items, fn, done = common.emptiness, initial) => { // initial - , optional value to be used as first // argument in first iteration const reduceRight = (items, fn, done = common.emptiness, initial) => { - try { - asyncIter(items) - .reduceRight((prev, cur) => promisify(fn)(prev, cur), initial) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .reduceRight((prev, cur) => promisify(fn)(prev, cur), initial) + .then(res => done(null, res)) + .catch(done); }; // Asynchronous each (iterate in parallel) @@ -169,14 +147,10 @@ const reduceRight = (items, fn, done = common.emptiness, initial) => { // (err, data) => console.dir('each done') // ); const each = (items, fn, done = common.emptiness) => { - try { - asyncIter(items) - .parallel(promisify(fn)) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .parallel(promisify(fn)) + .then(res => done(null, res)) + .catch(done); }; // Asynchronous series @@ -201,14 +175,10 @@ const each = (items, fn, done = common.emptiness) => { // } // ); const series = (items, fn, done = common.emptiness) => { - try { - asyncIter(items) - .each(promisify(fn)) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .each(promisify(fn)) + .then(res => done(null, res)) + .catch(done); }; // Asynchronous find (iterate in series) @@ -231,14 +201,10 @@ const series = (items, fn, done = common.emptiness) => { // } // ); const find = (items, fn, done = common.emptiness) => { - try { - asyncIter(items) - .find(promisify(fn)) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .find(promisify(fn)) + .then(res => done(null, res)) + .catch(done); }; // Asynchronous every @@ -252,14 +218,10 @@ const find = (items, fn, done = common.emptiness) => { // err - | // result - const every = (items, fn, done = common.emptiness) => { - try { - asyncIter(items) - .parallel(promisify(fn)) - .then(res => done(null, res.every(e => e))) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .parallel(promisify(fn)) + .then(res => done(null, res.every(e => e))) + .catch(done); }; // Asynchronous some (iterate in series) @@ -273,14 +235,10 @@ const every = (items, fn, done = common.emptiness) => { // err - | // result - const some = (items, fn, done = common.emptiness) => { - try { - asyncIter(items) - .some(promisify(fn)) - .then(res => done(null, res)) - .catch(done); - } catch (err) { - done(err); - } + asyncIter(items) + .some(promisify(fn)) + .then(res => done(null, res)) + .catch(done); }; module.exports = { diff --git a/test/array.asyncMap.js b/test/array.asyncMap.js index 5259f03d..b4f27382 100644 --- a/test/array.asyncMap.js +++ b/test/array.asyncMap.js @@ -88,11 +88,11 @@ metatests.test('asyncMap with error', test => { metatests.test('asyncMap with not iterable', test => { const obj = { a: '1', b: '2', c: '3' }; - const expectedError = new TypeError('Base is not Iterable'); - metasync.asyncMap(obj, test.mustNotCall(), (err, res) => { - test.isError(err, expectedError); - test.assertNot(res); - test.end(); - }); + test.throws( + () => metasync.asyncMap(obj, test.mustNotCall(), test.mustNotCall()), + new TypeError('Base is not Iterable') + ); + + test.end(); }); diff --git a/test/array.filter.js b/test/array.filter.js index b4f993c4..0f56dce3 100644 --- a/test/array.filter.js +++ b/test/array.filter.js @@ -94,11 +94,11 @@ metatests.test('filter with error', test => { metatests.test('filter with not iterable', test => { const obj = { a: '1', b: '2', c: '3' }; - const expectedError = new TypeError('Base is not Iterable'); - metasync.filter(obj, test.mustNotCall(), (err, res) => { - test.isError(err, expectedError); - test.assertNot(res); - test.end(); - }); + test.throws( + () => metasync.filter(obj, test.mustNotCall(), test.mustNotCall()), + new TypeError('Base is not Iterable') + ); + + test.end(); }); diff --git a/test/array.map.js b/test/array.map.js index bc96d929..d1cf0e7b 100644 --- a/test/array.map.js +++ b/test/array.map.js @@ -70,11 +70,11 @@ metatests.test('map with error', test => { metatests.test('map with not iterable', test => { const obj = { a: '1', b: '2', c: '3' }; - const expectedError = new TypeError('Base is not Iterable'); - metasync.map(obj, test.mustNotCall(), (err, res) => { - test.isError(err, expectedError); - test.strictSame(res, undefined); - test.end(); - }); + test.throws( + () => metasync.map(obj, test.mustNotCall(), test.mustNotCall()), + new TypeError('Base is not Iterable') + ); + + test.end(); });