code: func (s *Session) Run(ctx context.Context, dialer Dialer) error {
  	ctx, cancel := context.WithCancel(ctx)
  	s.cancelCtx = cancel
  	s.done = make(chan struct{})
  
  	defer cancel()
  	defer close(s.done)
  
  	meta := make(map[string][]string)
  	meta[headerSessionID] = []string{s.id}
  	meta[headerSessionName] = []string{s.name}
  	meta[headerSessionSharedKey] = []string{s.sharedKey}
  
  	for name, svc := range s.grpcServer.GetServiceInfo() {
  		for _, method := range svc.Methods {
  			meta[headerSessionMethod] = append(meta[headerSessionMethod], MethodURL(name, method.Name))
  		}
  	}
  	conn, err := dialer(ctx, "h2c", meta)
  	if err != nil {
  		return errors.Wrap(err, "failed to dial gRPC")
  	}
  	s.conn = conn
  	serve(ctx, s.grpcServer, conn)
  	return nil
  }
docs: // Run activates the session