Something that has always frustrated me: Why doesn’t logging from an immediate custom action work?. Christopher Painter pointed out a documented (!) answer.
https://learn.microsoft.com/en-us/windows/win32/msi/doaction-controlevent
“Note that custom actions launched by a DoAction ControlEvent can send a message with the Message method, but cannot send a message with MsiProcessMessage. On systems prior to Windows Server 2003, custom actions launched by a DoAction ControlEvent cannot send messages with MsiProcessMessage or Message. For more information, see Sending Messages to Windows Installer Using MsiProcessMessage.”