function elFactory (opts) {
  let entity = entityFactory(opts);
  return new Promise(resolve => {
    if (entity.sceneEl) {
      if (entity.sceneEl.hasLoaded) { return resolve(entity); }
      entity.sceneEl.addEventListener('loaded', () => { resolve(entity); });
      return;
    }
    entity.addEventListener('nodeready', () => {
      if (entity.sceneEl.hasLoaded) { return resolve(entity); }
      entity.sceneEl.addEventListener('loaded', () => { resolve(entity); });
    });
  });
}
A more robust entity factory that resolves once stuff is loaded without having to wait
on fragile asynchronicity.

@returns {Promise}