WHAT: Provide my own ThreadFactory to the HeartbeatSender's ScheduledThreadPoolExecutor
WHY: Otherwise, it will always leave a non-daemon thread running