Those tests below (and the old ones) pass for me using this fill for `forEach`. I think if we're going to call the method 'forEach' we should supply the same functionality forEach has for arrays. In this case (aside from the optional this argument), every test which expects a single draft object per iteration should pass (because the array element is the first argument). Alternately, since `arr` is actually an array, we don't need to fill it in:

    DraftList.prototype.forEach = function(callback, scope) {
      var arr = Array.prototype.slice.call(priv.get(this).drafts, 0);
      Array.prototype.forEach.call(arr, callback, scope);
    };

Now we're back to your original implementation but because we make a copy of the array, it doesn't matter what we expose as arguments to the callback, the DraftList can't be mutated.