abstract Promotion.all() in promotion.js