code: func (p *MsgPipeRW) ReadMsg() (Msg, error) {
  	if atomic.LoadInt32(p.closed) == 0 {
  		select {
  		case msg := <-p.r:
  			return msg, nil
  		case <-p.closing:
  		}
  	}
  	return Msg{}, ErrPipeClosed
  }
docs: // ReadMsg returns a message sent on the other end of the pipe.