The timeout mentioned in [1] is in waiting for WM_ENDSESSION to return. This wait and timeout is handled by send_messages_with_timeout_dialog. However, once that message has returned, the process has done all the cleanup it needs and should be terminated. Since Windows terminates processes immediately after WM_ENDSESSION returns, there's no reason to believe the app will ever close itself and no reason to wait before killing it.
Ah, right. Thanks for the explanation, carry on :) --Juan