Unfortunately, entities don’t have a ready promise in the same way primitives do, because entities can be dynamic and may load/reload things throughout its lifetime. Functions like viewer.flyTo(entity) will automatically wait for the entity to finish loading before initiating. They do this by checking every frame if the entity is ready.
It involves some private classes, but you can see how this logic is computed here: