Code review fixmes

Promises can be chained; returning a value inside `then` allows another callee to call `then` on the result and get the modified value, e.g.

```javascript
Promise.resolve([1,2,3])
    .then(function (data) {
        data.push(4);
        return data;
    })
    .then(function (data) {
        console.log(data); // [1, 2, 3, 4]
    });
```

So that saves you from having to explicitly create more promise objects. Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

>`Promise.prototype.then(onFulfilled, onRejected)`
Appends fulfillment and rejection handlers to the promise, and __returns a new promise resolving to the return value of the called handler.__

This pattern was confusing to me at first as well when I saw it in the docs.