GHAAAA! Why does this produce an error?

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 })
  ...