ch20: grouping promises, resolving with q.all