code: func DialContext(ctx context.Context, rawurl string) (*Client, error) {
  	u, err := url.Parse(rawurl)
  	if err != nil {
  		return nil, err
  	}
  	switch u.Scheme {
  	case "http", "https":
  		return DialHTTP(rawurl)
  	case "ws", "wss":
  		return DialWebsocket(ctx, rawurl, "")
  	case "stdio":
  		return DialStdIO(ctx)
  	case "":
  		return DialIPC(ctx, rawurl)
  	default:
  		return nil, fmt.Errorf("no known transport for URL scheme %q", u.Scheme)
  	}
  }
docs: // DialContext creates a new RPC client, just like Dial.
  //
  // The context is used to cancel or time out the initial connection establishment. It does
  // not affect subsequent interactions with the client.