public Task RequestAsync()

in src/Elastic.Transport.VirtualizedCluster/Components/VirtualClusterConnection.cs [122:180]


	public Task<TResponse> RequestAsync<TResponse>(Endpoint endpoint, BoundConfiguration boundConfiguration, PostData? postData, CancellationToken cancellationToken)
		where TResponse : TransportResponse, new() =>
		Task.FromResult(Request<TResponse>(endpoint, boundConfiguration, postData));

	/// <inheritdoc cref="IRequestInvoker.Request{TResponse}"/>>
	public TResponse Request<TResponse>(Endpoint endpoint, BoundConfiguration boundConfiguration, PostData? postData)
		where TResponse : TransportResponse, new()
	{
		if (!_calls.ContainsKey(endpoint.Uri.Port))
			throw new Exception($"Expected a call to happen on port {endpoint.Uri.Port} but received none");

		try
		{
			var state = _calls[endpoint.Uri.Port];
			if (IsSniffRequest(endpoint))
			{
				_ = Interlocked.Increment(ref state.Sniffed);
				return HandleRules<TResponse, ISniffRule>(
					endpoint,
					boundConfiguration,
					postData,
					nameof(VirtualCluster.Sniff),
					_cluster.SniffingRules,
					boundConfiguration.RequestTimeout,
					(r) => UpdateCluster(r.NewClusterState),
					(r) => _productRegistration.CreateSniffResponseBytes(_cluster.Nodes, _cluster.ElasticsearchVersion, _cluster.PublishAddressOverride, _cluster.SniffShouldReturnFqnd)
				);
			}
			if (IsPingRequest(endpoint))
			{
				_ = Interlocked.Increment(ref state.Pinged);
				return HandleRules<TResponse, IRule>(
					endpoint,
					boundConfiguration,
					postData,
					nameof(VirtualCluster.Ping),
					_cluster.PingingRules,
					boundConfiguration.PingTimeout,
					(r) => { },
					(r) => null //HEAD request
				);
			}
			_ = Interlocked.Increment(ref state.Called);
			return HandleRules<TResponse, IClientCallRule>(
				endpoint,
				boundConfiguration,
				postData,
				nameof(VirtualCluster.ClientCalls),
				_cluster.ClientCallRules,
				boundConfiguration.RequestTimeout,
				(r) => { },
				CallResponse
			);
		}
		catch (TheException e)
		{
			return ResponseFactory.Create<TResponse>(endpoint, boundConfiguration, postData, e, null, null, Stream.Null, null, -1, null, null);
		}
	}