I see. Would it no be simpler if a task just returned a promise?

```js
function (i) {
    return function (previousResult) {
        console.log("started", i);
        return Q.delay(Math.ceil(Math.random() * 1000 * 10))
        .then(function () {
            console.log("finished", i);
        })
    };
}
```