consider adding a new struct `Ticker`, which implement `futures::Stream`, can return an instant periodically by use `.next().await`