If the dgram client errors, the callback receives an Error object, but if there is a timeout a String gets passed as the error callback which makes appropriate error handling a real pain:
https://github.com/moonpyk/node-ntp-client/blob/master/lib/ntp-client.js#L52