Callback timeouts must be calculated at registration, not at enabling:
> Disabling a callback simply determines whether or not the callback will
> be triggered when its trigger event occurs. For example, disabling a
> callback that is registered to trigger after a given delay and
> subsequently enabling before expiry of the delay does not postpone the
> time at which the trigger event occurs.
Additionally, any data in cb_data_p that we do not save (such as time)
may not be accessed after we return from registration.