Documentation for phasers
INIT assembled from the following types:
Runs after compilation during main execution, as soon as possible, only runs once.
Can have a return value that is provided even in later phases.
When phasers are in different modules, the
END phasers are treated as if declared at
use time in the using module. (It is erroneous to depend on this order if the module is used more than once, however, since the phasers are only installed the first time they're noticed.)
Code that is generated at runtime can still fire off
INIT phasers, though of course those phasers can't do things that would require travel back in time. You need a wormhole for that.
INIT only runs once for all copies of a cloned closure.