code: func (w *WebRTCSignalMessage) ParsePayload() (*Payload, error) {
  	w.mu.Lock()
  	defer w.mu.Unlock()
  
  	if w.isParsed {
  		return w.parsedPayload, nil
  	}
  
  	payload := &Payload{}
  	if err := json.Unmarshal(w.Payload, payload); err != nil {
  		return nil, err
  	}
  
  	w.parsedPayload = payload
  	return payload, nil
  }
docs: // ParsePayload parses the payload if it is not parsed previously. This method
  // can be called concurrently.