If the "hard" flag is set, the event will be queued for execution relative to the last time the callback was invoked. However, if "hard" is false the new timeout will be calculated relative to the current time (this is the default).