Am I going to have to write this using allSettled and then parse that?
Yes, if you don't want to abort on the first failed request.
FS.read('members.json')
.then(JSON.parse)
.then(function(memberObjects){
var httpCheckPromises = _.chain(memberObjects)
.first(100)
.pluck("website")
.filter(function(website){
return website.toLowerCase().indexOf('www') >= 0;
})
.map(HTTP.read)
.value();
return Q.allSettled(httpCheckPromises);
}).then(function(requests) {
var goodRequests = _.chain(requests)
.where({state:"fulfilled"})
.pluck("value")
.value(),
badRequests = _.chain(requests)
.where({state:"rejected"})
.pluck("reason")
.value();
console.log("good:", goodRequests);
console.log("bad:", badRequests);
});