code: func broadcastEnvelope(reqCtx reqContext.Context, envelope *fab.SignedEnvelope, orderers []fab.Orderer) (*fab.TransactionResponse, error) {
  	// Check if orderers are defined
  	if len(orderers) == 0 {
  		return nil, errors.New("orderers not set")
  	}
  
  	// Copy aside the ordering service endpoints
  	randOrderers := []fab.Orderer{}
  	randOrderers = append(randOrderers, orderers...)
  
  	// Iterate them in a random order and try broadcasting 1 by 1
  	var errResp error
  	for _, i := range rand.Perm(len(randOrderers)) {
  		resp, err := sendBroadcast(reqCtx, envelope, randOrderers[i])
  		if err != nil {
  			errResp = err
  		} else {
  			return resp, nil
  		}
  	}
  	return nil, errResp
  }
docs: // broadcastEnvelope will send the given envelope to some orderer, picking random endpoints
  // until all are exhausted