# Functions
DoWithTimeout performs the action as soon as the waitable is done.
IsDone checks if the given waitable's condition is fulfilled.
NewSignal creates a new signal that is in the reset state.
Wait waits indefinitely until the condition represented by the given Waitable is fulfilled.
WaitWithTimeout waits for the given Waitable with a specified timeout.
# Interfaces
Waitable is a generic interface for things that can be waited upon.