onBeforeRender rendered twice

where a mesh is rendered directly and has 'onBeforeRender' set, onBeforeRender is called twice per render call.

by sjpt

HTML

<p id='msg'>
msg
</p>

JavaScript

import * as THREE from "https://rawgit.com/mrdoob/three.js/dev/build/three.module.js";
var camera, scene, renderer, geometry, material, mesh, sub, frame=0, onbefore=0;

init();
animate();

function init() {
    console.log('----------------------------------------------');

    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.z = 500;

    geometry = new THREE.CubeGeometry(200, 200, 200);
    material = new THREE.MeshBasicMaterial( { color:  0xffffff } );

    mesh = new THREE.Mesh(geometry, material);
    mesh.onBeforeRender = () => onbefore++;
    
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);

    document.body.appendChild(renderer.domElement);

}

function animate() {
	frame++;
    
    requestAnimationFrame(animate);
    render();
    window.msg.innerHTML = `ratio of callbacks to render calls => ${onbefore/frame}<br>frame=${frame} onbefore=${onbefore}`

}

function render() {

    renderer.render(mesh, camera);

}