code: func (n *node) readTx(fn func(tx *bolt.Tx) error) error {
  	if n.tx != nil {
  		return fn(n.tx)
  	}
  
  	return n.s.Bolt.View(func(tx *bolt.Tx) error {
  		return fn(tx)
  	})
  }
docs: // Detects if already in transaction or runs a read transaction.