in timebucket.go [11:24]
func newTimeBucket(endTime time.Time, bucketSize time.Duration, minDelay time.Duration) *TimeBucket {
// Ensure the endTime is at least minDelay in the past.
if endTime.After(time.Now().Add(-minDelay)) {
endTime = time.Now().Add(-minDelay)
}
// Truncate to the size of the bucket
endTime = endTime.Round(bucketSize)
return &TimeBucket{
endTime: endTime,
size: bucketSize,
delay: minDelay,
}
}