timer - An object that may be signaled at some point in the future
A timer is used to wait until a specified point in time has occurred or the timer has been canceled.
A given timer can be used over and over.
The typical lifecycle is:
- wait for the timer to be signaled
- optionally reset and reuse the timer (i.e. goto #2)