According to http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-node-pre-insert , step 8, pre-insert algorithm returns a "child", but in the context of that particular alrogitm, a "child" is a reference node, NOT the inserted node.
Therefore, step 8 should read: "8. Return <i>node</i>."
This is critical, because the value returned by pre-insert algoritm is passed on to and returned by the Node.appendChild(node) and Node.insertBefore(node, child) method.
If implemented as is, Node.appendChild(node) will ALWAYS return null, whereas it must return the inserted node.
Good catch, thanks.