Well... after much consideration, I think I'm going to leave it the way it is (with the `overallDeferred`). Here's my reason:

If I go with returning the promise that comes from `spread`, then I can't have a fail handler in the spread call (because I need the caller of getPixmap to be able to attach their own fail handler, and if a fail handler is specified in the spread call, then fail handlers attached to the _returned_ promise never get called). So, then I need to store it in a temp, and attach a `finally` (or `fail`) to it that resolves the executionDeferred and then return the temp. I guess that's fine, but it's kind of weird, and anyway, QE is already testing the logic we have.

For the record, the following code:

```javascript
Q = require("q");
a = Q.defer();
b = Q.defer();
p = Q.all([a.promise,b.promise]).spread(
    function (a, b) { console.log("got:", a + b) },
    function (err) { console.log("fail from spread:", err) }
);
p.fail(function (err) { console.log("fail outside spread:", err) });
a.reject(1);
```

Produces this output:

```
fail from spread: 1
```