uses promise queue to do nothing in parallel