Jitter returns a time.Duration between duration and duration + maxFactor * duration,
to allow clients to avoid converging on periodic behavior. If maxFactor is 0.0, a
suggested default value will be chosen.
Poll tries a condition func until it returns true, an error, or the timeout
is reached. condition will always be invoked at least once but some intervals
may be missed if the condition takes too long or the time window is too short.
If you pass maxTimes = 0, Poll will loop until condition returns true or an
error.
WaitFor gets a channel from wait(), and then invokes c once for every value
placed on the channel and once more when the channel is closed. If c
returns an error the loop ends and that error is returned, and if c returns
true the loop ends and nil is returned. ErrWaitTimeout will be returned if
the channel is closed without c every returning true.