I'm migration a project from Q to bluebird. 
In this project Q.invoke is used a lot. 

e.g. in central methods like this: 

```
repo.count = function(entity,query)  { // entity is a mongoose model
    var command = query = entity.find(query).count();
    return Q.ninvoke(command, 'exec');
};

```

What would be the best bluebird way of refactoring this code and returning the same "kind" of promise?
Reading the bluebird docs, it seems that promisifyAll seems to be the point in the right direction. Right now I have this which works, but makes the call blocking:

```
repo.count = function*(entity,query)  {
    entity = bluebird.promisifyAll(entity); // this needs to be moved somewhere central
    return yield entity.find(query).count();
};

```