The purpose of TransitName is to allow a library to 'move' a name
call to a more appropriate place.
For example, a library factory function may create a module and return
the io. The only user-exposed field is that given IO, which can't use
any name supplied by the user. This can add a hook so that the supplied
name then names the Module.
See Queue companion object for working example