you picked up old js patterns. maybe start with this Learn ES2015 · Babel it’s going to teach you 2015 js. let/const, classes, arrow functions, destructuring, modules, promises. but you’d still need async/await - imo there is no point in trying threejs without these, you will start to think this library is a hellscape but really it’s your programming patterns.
ps
async function app() {
const [font, hdri, gltf] = await Promise.all([
new Promise((res, rej) => fontLoader.load("/font.json", res, rej)),
new Promise((res, rej) => rgbeLoader.load("/warehouse.hdr", res, rej)),
new Promise((res, rej) => gltfLoader.load("/model.glb", res, rej)),
])
scene.add(gltf.scene)
scene.background = hdri
const font = new TextGeometry('hello', { font })
...