When starting puppetd in daemon mode, a bad certificate received from the puppet master causes the client to exit. This is (according to me) undesirable behavior. Why not just retry once in a while like when there is no signed client certificate on the master for this host? As of now, if the client is reinstalled without first removing the old puppet client certificate, the system administrator must then manually login to the client to restart the puppet daemon (after removing the old certificate).
In my opinion, a daemon should not exit unless in encounters a truly fatal error, and this error is not one of them. An example of a truly fatal error would be a missing dependency.
Unfortunately, I do not know Ruby (yet), so I cannot fix it.