public async ValueTask <IPEndPoint?> GetIpEndPointAsync(string hostNameOrIpAddress, int port, CancellationToken cancellationToken = default) { if (hostNameOrIpAddress == null) { throw new ArgumentNullException(nameof(hostNameOrIpAddress)); } if (!IPAddress.TryParse(hostNameOrIpAddress, out IPAddress? ipAddress)) { ipAddress = await _dnsResolver.GetIpAddressAsync(hostNameOrIpAddress, cancellationToken) .ConfigureAwait(false); } if (ipAddress == null) { throw new InvalidArgumentException($"Cannot resolve DNS for {hostNameOrIpAddress}."); } return(new IPEndPoint(ipAddress, port)); }