There are actually some more concerns:
1. we have a printer unit.
2. we have a printers unit.
*1 is a line printer unit from the DOS era, basically writeln(<device>, <content>)
*2 is a more modern unit and e.g. on Windows should access the printer queue.
In principle both are threadsafe, but both need to exit cleanly. Hence waitfor.
The second option should be more forgiving, though, because it already delegates the job to the OS printer queue.
Hence more likely to print even if the application is not terminated correctly.