For anyone looking at this, there is no need to load the members of the groups so this code should work fine.
library.modifyUserInfo = function(userData, callback)
{
var groupsData;
async.waterfall([
function (next) {
groups.getUserGroups([userData.uid], next);
},
function (_groupsData, next) {
groupsData = _groupsData[0];
userData.groups = groupsData.filter(Boolean);
next(null, userData);
},
], callback);
}