What you are doing in your code is actually not valid. When a geometry is disposed, you have to create a new geometry and not just assign new buffer data. Besides, doing:
yep yep I fixed it. I had a group and I was iterating through all the children to take them out of the scene. But it looks like the group was still referencing the mesh inside it… so instead of grouping them I just add them individually and then use this:
function dispose(children){
for(var i = 0; i < children.length; i++){
var child = children[i]
var id = child.id
child = scene.getObjectById( id, true )
child.geometry.dispose();
child.material.dispose();
scene.remove(child)
scene.dispose()