actually wait for promises to complete