Passing results up multiple nested callbacks in node.js

The following code takes a list of an Instagram user's followers and combines them into a single array so I can return them in a Express route handler.

This needs to keep running until Instagram says there are no more results to page through. The function accepts a required "user id", a required "access_token", a optional "cursor" and a callback.

The fully combined data is successfully returned and in the correct JSON format, but I can't get it back to the express handler.

How can I pass this information back up to the express handler?

var out_data = [];
function getFollows(id,access_token,cursor,callback) {
  if(cursor && cursor != 1) {
    console.log('using cursor url with cursor: '+cursor);
    var url = 'https://api.instagram.com/v1/users/'+id+'/follows?&access_token='+access_token+'&client_id='+client_id+'&cursor='+cursor;
  } else {
    console.log('using standard url');
    var url = 'https://api.instagram.com/v1/users/'+id+'/follows?&access_token='+access_token+'&client_id='+client_id+';
  }
  request(url,function(err,res,body){
    var json = JSON.parse(body);
    _.each(json.data,function(item){
      out_data.push(item);
    });
    if(json.pagination.next_cursor) {
      getFollows(id,access_token,json.pagination.next_cursor,function(adata){
          out_data.push(adata);
      });
    }
    if(!json.pagination.next_cursor) {
      callback(out_data);
      //console.log(out_data);
    }
  });
};

The section of the route handler that depends on the results of getFollows() needs to be in a function passed to getFollows() as its callback. Essentially the call to getFollows() needs to be the last statement in the handler.