The problem is that until setLocalDescription() is done, we have no idea how many candidates we will need, because that depends on the number of m= lines and the bundle option.
We had discussions in Lyon last month about providing "preallocated" candidates, with some controls to control how many candidates to gather and when, but this is likely to be an "advanced feature" - too many things can go wrong.