Нет необходимости использовать PQueue, bluebird уже поддерживает это "из коробки":
(async () => {
const games = JSON.parse(JSON.stringify(req.body.games));
let params = { concurrency: 2};
let r1 = await Promise.map(games, g => firstSearch(g.game, g.categories), params);
let r2 = await Promise.map(games, g => secondSearch(g.game, g.categories), params);
console.log(r1, r2);
})();
Или более правильно, но с большим количеством кода (поэтому последний - первый поиск не ждет):
(async () => {
const games = JSON.parse(JSON.stringify(req.body.games));
let params = { concurrency: 2};
let fns = [
...games.map(g => () => firstSearch(g.game, g.categories)),
...games.map(g => () => secondSearch(g.game, g.categories)),
];
let results = await Promise.map(fns, fn => fn(), params);
console.log(results);
})();