code: func (t *Transport) Send(m raftpb.Message) error {
  	t.mu.Lock()
  	defer t.mu.Unlock()
  	if t.stopped {
  		return errors.New("transport stopped")
  	}
  	if t.config.IsIDRemoved(m.To) {
  		return errors.Errorf("refusing to send message %s to removed member %x", m.Type, m.To)
  	}
  	p, ok := t.peers[m.To]
  	if !ok {
  		log.G(t.ctx).Warningf("sending message %s to an unrecognized member ID %x", m.Type, m.To)
  		select {
  		// we need to process messages to unknown peers in separate goroutine
  		// to not block sender
  		case t.unknownc <- m:
  		case <-t.ctx.Done():
  			return t.ctx.Err()
  		default:
  			return errors.New("unknown messages queue is full")
  		}
  		return nil
  	}
  	if err := p.send(m); err != nil {
  		return errors.Wrapf(err, "failed to send message %x to %x", m.Type, m.To)
  	}
  	return nil
  }
docs: // Send sends raft message to remote peers.