What about:

      DraftList.prototype.forEach = function(callback, scope) {
        var arr = Array.prototype.slice.call(priv.get(this).drafts, 0);
        for (var i = 0; i < arr.length; i++) {
          callback.call(scope, arr[i], i, arr);
        }
      };

That will preserve the DraftList from being mutated but still allow someone to do everything they want to with forEach.