code: func (w *OrderedValue) Value() interface{} {
  	w.lock.Lock()
  
  	// If we have a pending value already, use it
  	if w.values != nil && w.values.Len() > 0 {
  		front := w.values.Front()
  		w.values.Remove(front)
  		w.lock.Unlock()
  		return front.Value
  	}
  
  	// No pending value, create a waiter
  	if w.waiters == nil {
  		w.waiters = list.New()
  	}
  
  	var val Value
  	w.waiters.PushBack(&val)
  	w.lock.Unlock()
  
  	// Return the value once we have it
  	return val.Value()
  }
docs: // Value returns the last value that was set, or blocks until one
  // is received.