// map.iterator() is live: entries added during iteration are visited. var map = new Map(); function force(k) { if (!map.has(k) && k >= 0) map.set(k, k - 1); } force(5); var log = ''; for (let [k, v] of map) { log += k + ';'; force(v); } assertEq(log, '5;4;3;2;1;0;'); assertEq(map.size, 6);