code: func (n *node) readWriteTx(fn func(tx *bolt.Tx) error) error {
  	if n.tx != nil {
  		return fn(n.tx)
  	}
  
  	if n.batchMode {
  		return n.s.Bolt.Batch(func(tx *bolt.Tx) error {
  			return fn(tx)
  		})
  	}
  
  	return n.s.Bolt.Update(func(tx *bolt.Tx) error {
  		return fn(tx)
  	})
  }
docs: // Detects if already in transaction or runs a read write transaction.
  // Uses batch mode if enabled.