code: func (om *OrderedMap) UnsafeIter() <-chan *KVPair {
  	keys := make(chan *KVPair)
  	go func() {
  		defer close(keys)
  		var curr *node
  		root := om.root
  		curr = root.Next
  		for curr != root {
  			v, _ := om.store[curr.Value]
  			keys <- &KVPair{curr.Value, v}
  			curr = curr.Next
  		}
  	}()
  	return keys
  }
docs: /*
  Beware, Iterator leaks goroutines if we do not fully traverse the map.
  For most cases, `IterFunc()` should work as an iterator.
   */