SceneAsset:ready() -> SceneAssetWait until this asset is fully loaded, then return it for chaining. An in-memory asset returns at once; one still loading (a file read or remote fetch) yields the coroutine until it lands. A load failure raises; format errors on playable assets still surface at use time.
local asset = datumhue.package:dir():read("robot.glb"):scene()
-- Waits for the file to load; raises if it is missing or not glTF.
asset:ready()
local scene = datumhue.scene.new({ width = 320, height = 240 })
scene:mount({ width = 320, height = 240 })
scene:model({ asset = asset })