What happens if, through some error in programming, the prepare() promises never resolves?
The spec says that the page never re-renders anything on the screen, but I would assume this is a drastic error case for a transition effect (which is usually just a nice-to-have).
It would probably make sense to automatically abandon the transition if it takes too long to prepare. There could be a default timeout, and maybe a parameter to supply a custom timeout in case authors expect the transition to take a long time (but this seems counter-productive).