If later someone adds a new field to State and at that point a fresh new state is the wrong thing to do and that person does not notice this line so far away from the record field, it will wipe out that new field upon receiving the DOWN message. Imagine how hard that would be to track. An OTP gen_server is usually almost always just updating the state and not wiping it clean. I really think that

'''erlang
handle_info({'DOWN', MonRef, process, Pid, _Cause}, State=#state{repair_mon={Pid, MonRef}}) ->
    RepairMonitor = spawn_monitor(fun() -> stat_repair_loop() end),
    {noreply, State#state{repair_mon=RepairMonitor}};
'''
would be more future proof.  If any new field is added to state, it will be preserved.  This could be you in 3 months! :)