code: func (s *Cache) Set(key string, value interface{}) error {
  	if s.removeExpired() == raiqub.WriteLocked {
  		s.Unlock()
  		s.RLock()
  	}
  	defer s.RUnlock()
  
  	v, err := s.unsafeGet(key)
  	if err != nil {
  		return err
  	}
  
  	v.Postpone()
  	v.value = value
  	return nil
  }
docs: // Set sets the value of specified key.
  //
  // Errors:
  // InvalidKeyError when requested key could not be found.