I know it wasn't exactly on our todo list, but I just couldn't help myself from making a better timer function for ULib.
Here's some output

] lua ULib.addTimer( 1, 5, function () ULib.nonexist() end )
Lua Error: Line 1: attempt to call field 'nonexist' (a nil value)
[ULib timer] You probably just saw an error, this error came from timerid 1
Lua Error: Line 1: attempt to call field 'nonexist' (a nil value)
[ULib timer] You probably just saw an error, this error came from timerid 1
Lua Error: Line 1: attempt to call field 'nonexist' (a nil value)
[ULib timer] You probably just saw an error, this error came from timerid 1
Lua Error: Line 1: attempt to call field 'nonexist' (a nil value)
[ULib timer] You probably just saw an error, this error came from timerid 1
Lua Error: Line 1: attempt to call field 'nonexist' (a nil value)
[ULib timer] You probably just saw an error, this error came from timerid 1
] lua ULib.addTimer( 1, 5, ULib.print, "yay" )
yay
yay
yay
yay
yay
You'll notice that not only is it able to keep processing timed functions if one screws up, it gives you the error message as well (Gmod's timer doesn't even tell you there was a problem).