code: func (sub *subState) adjustAckTimer(nextExpirationTime int64) {
  	sub.Lock()
  	defer sub.Unlock()
  
  	// Possible that the subscriber has been destroyed, and timer cleared
  	if sub.ackTimer == nil {
  		return
  	}
  
  	// Check if there are still pending acks
  	if len(sub.acksPending) > 0 {
  		// Capture time
  		now := time.Now().UnixNano()
  
  		// If the next expiration time is 0 or less than now,
  		// use the default ackWait
  		if nextExpirationTime <= now {
  			sub.ackTimer.Reset(sub.ackWait)
  		} else {
  			// Compute the time the ackTimer should fire, based
  			// on the given next expiration time and now.
  			fireIn := (nextExpirationTime - now)
  			sub.ackTimer.Reset(time.Duration(fireIn))
  		}
  	} else {
  		// No more pending acks, clear the timer.
  		sub.clearAckTimer()
  	}
  }
docs: // adjustAckTimer adjusts the timer based on a given next
  // expiration time.
  // The timer will be stopped if there is no more pending ack.
  // If there are pending acks, the timer will be reset to the
  // default sub.ackWait value if the given expiration time is
  // 0 or in the past. Otherwise, it is set to the remaining time
  // between the given expiration time and now.