code: func (eni *ENIAttachment) StartTimer(timeoutFunc func()) error {
  	eni.guard.Lock()
  	defer eni.guard.Unlock()
  
  	if eni.ackTimer != nil {
  		// The timer has already been initialized, do nothing
  		return nil
  	}
  	now := time.Now()
  	duration := eni.ExpiresAt.Sub(now)
  	if duration <= 0 {
  		return errors.Errorf("eni attachment: timer expiration is in the past; expiration [%s] < now [%s]",
  			eni.ExpiresAt.String(), now.String())
  	}
  	seelog.Infof("Starting ENI ack timer with duration=%s, %s", duration.String(), eni.stringUnsafe())
  	eni.ackTimer = time.AfterFunc(duration, timeoutFunc)
  	return nil
  }
docs: // StartTimer starts the ack timer to record the expiration of ENI attachment