Maybe it wasn't working because you were using `done` in the first place. 

`done` returns the same promise, so the next `then` just gets chain to the original one and executed right after the first done handler finishes.

In contrast, `then` returns a new promise that is resolved with the return value of the filter it receives.

I can merge it as is and work on it, or wait for you to do it if you want to give it a try. As you'd prefer :)