relay_timer_pool.go
func (rt *relayTimer) Start(d time.Duration, items *relayItems, id uint32, isOriginator bool) {
	rt.verifyNotReleased()
	if rt.active {
		panic("Tried to start an already-active timer")
	}

	rt.active = true
	rt.items = items
	rt.id = id
	rt.isOriginator = isOriginator

	if wasActive := rt.timer.Reset(d); wasActive {
		panic("relayTimer's underlying timer was Started multiple times without Stop")
	}
}
func (rt *relayTimer) Start(d time.Duration, items *relayItems, id uint32, isOriginator bool) {
	rt.verifyNotReleased()
	if rt.active {
		panic("Tried to start an already-active timer")
	}

	rt.active = true
	rt.items = items
	rt.id = id
	rt.isOriginator = isOriginator

	if wasActive := rt.timer.Reset(d); wasActive {
		panic("relayTimer's underlying timer was Started multiple times without Stop")
	}
}
// Start starts a timer with the given duration for the specified ID.