@domenic @stefanpenner this is the test I think will fail if we only return `array.filter(filterFn)` as domenic proposed. Basically, I want it to be able to wait for a promise like `RSVP.map` does. We don't want to return the result of the `filterFn`'s promise in the last resolved promise because we want to return things given in the original call to `RSVP.filter`. This sounds crazy but hear me out:

With @domenic's proposal, it would happen like this:

```javascript

var stef = new Cat("Stefan");
var domenic = new Cat("Domenic");

RSVP.filter([stef, domenic], function(cat){
  if (cat.name === "Domenic") {
    return RSVP.resolve(true);
  }
  return true;
}).then(function(catArray){
  console.log(catArray); // => [ stefCatObject, <PromiseThatResolvesWithTrueAsItsValue ]
});
```

Even if the consumer of the library did a `RSVP.all` on the resulting array, it would end up being:

```javascript
[stefCatObject, true]
```

What we want is the `domenicCatObject`, not the value true. Because the filterFn's return promise doesn't keep a reference to the original value, it is lost and reduces the usefulness of the function.

However, with the current PR, the resulting array would be `[stefCatObject, domenicCatObject]`