private async Task <EventData> GetEventDataFrom(HtmlNodeCollection tdNodes, string previousEventVenue, string previousEventLocation, bool previousEventIsCancelled, CancellationToken cancellationToken = default)
        {
            var eventNameIndex        = 0;
            var eventDateIndex        = 1;
            var eventVenueIndex       = 2;
            var eventLocationIndex    = 3;
            var eventIsCancelledIndex = 4;

            var eventName = GetInnerTextFrom(tdNodes[eventNameIndex]);

            if (string.IsNullOrWhiteSpace(eventName))
            {
                Log(LogLevel.Warning, $"Event name was null or white space: {eventName}");
            }
            else
            {
                Log(LogLevel.Information, $"Start parsing event: {eventName}");
            }

            var eventDate = GetEventDate(tdNodes, eventDateIndex);

            if (tdNodes.ElementAtOrDefault(eventVenueIndex) is not null)
            {
                var currentEventVenue = GetInnerTextFrom(tdNodes[eventVenueIndex]);

                if (!Regex.IsMatch(currentEventVenue, @"^&#91;\d*&#93;"))
                {
                    previousEventVenue = currentEventVenue;
                }
            }

            if (tdNodes.ElementAtOrDefault(eventLocationIndex) is not null)
            {
                var currentEventLocation = GetInnerTextFrom(tdNodes[eventLocationIndex]);

                if (!Regex.IsMatch(currentEventLocation, @"^&#91;\d*&#93;"))
                {
                    previousEventLocation = currentEventLocation;
                }
            }

            if (tdNodes.ElementAtOrDefault(eventIsCancelledIndex) is not null)
            {
                previousEventIsCancelled = GetInnerTextFrom(tdNodes[eventIsCancelledIndex]).Contains(Cancelled_Token);
            }

            var eventData = new EventData()
            {
                EventName   = eventName,
                Date        = eventDate,
                Venue       = previousEventVenue,
                Location    = previousEventLocation,
                IsCancelled = previousEventIsCancelled
            };

            var fightCardHref = GetFightCardHref(tdNodes[eventNameIndex]);

            if (string.IsNullOrWhiteSpace(fightCardHref))
            {
                Log(LogLevel.Debug, $"Fight card href for event: {eventName} / {eventDate.ToShortDateString()} was not found.");
                return(eventData);
            }

            Log(LogLevel.Information, $"Start parsing event deatails for: {eventName} / {eventDate.ToShortDateString()}.");
            var fightCardUri = new Uri(Base_Uri + fightCardHref);
            var documentNode = GetDocumentNode(await GetHtmlContentFromWebAsync(fightCardUri, cancellationToken));

            eventData.ImgSrc    = GetImgSrc(documentNode);
            eventData.FightCard = GetFightCard(documentNode);

            var bonusAwardsNode = documentNode.SelectNodes(Bonus_Awards_Xpath)?.FirstOrDefault();

            if (bonusAwardsNode is not null)
            {
                eventData.BonusAwards = GetBonusAwards(bonusAwardsNode);
            }

            return(eventData);
        }