I like the idea of not registering it at all until the promise is resolved (that is, until the mode is loaded).  That would fix #2962 too.