Lots of changes to async/await required to allow this. We have to make
some changes to handle the fact that modules are loaded async in stages
rather than sync (so we can't control when top-level functionality is
run in a fine grained way)
GitOrigin-RevId: 0127b15bfc4f228a267df3af8519c675e900654e