Yea, that’s also a way. I am a bit not sure, which solution is better, though. Eg. If we don’t defer an app, then on slow connections there might be glitches after the app was loaded, as after promise is resolved, all places where it is used, redraw should happen.
On the other hand, on a slow connection, if we defer, we might spend more time getting data. But, the beauty is, because assetMap.json is cached in a customer browser, it means, this “defer” will happen only once, and then assetMap will be cached.
In your example I see you are using assetMap.json, without fingerprinting, I assume you specifically set it to not be cached? If you can do that, its good) otherwise, it might impact loading every time. Or, if it cached, then there might be delay, when you deploy new code to production and wipe CDN cache for example, it could be, that your assetMap.json is a bit outdated for some time. But if you can afford that, then its good :)