diff --git a/lib/index.js b/lib/index.js index 5a6bc21..7c21a89 100644 --- a/lib/index.js +++ b/lib/index.js @@ -161,17 +161,15 @@ const Channel = function(length = 0) { filter: (callbackfn, thisArg) => { const output = Channel(); - (async () => { - for (;;) { - const value = await readOnly.shift(); - if (value === undefined) { - await output.close(); - break; - } else if (callbackfn.call(thisArg, value)) { + (async () => { + await readOnly.forEach(async value => { + if (await callbackfn.call(thisArg, value)) { await output.push(value); } - } + }); + + await output.close(); })(); return output; diff --git a/test/index.js b/test/index.js index dda61a9..49cff1c 100644 --- a/test/index.js +++ b/test/index.js @@ -244,7 +244,7 @@ describe(`Channel object`, function() { it(`filter`, async function() { assert.deepEqual( await Channel.of(0, 1, 2, 3, 4, 5) - .filter(value => value % 2 !== 0) + .filter(async value => value % 2 !== 0) .values(), [1, 3, 5] );