/// <summary>
        /// Responsible for sending Open Telemetry Spans to New Relic endpoint.
        /// </summary>
        /// <param name="otSpans">Collection of Open Telemetry spans to be sent to New Relic</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async override Task <ExportResult> ExportAsync(IEnumerable <Span> otSpans, CancellationToken cancellationToken)
        {
            if (otSpans == null)
            {
                throw new ArgumentNullException(nameof(otSpans));
            }
            if (cancellationToken == null)
            {
                throw new ArgumentNullException(nameof(cancellationToken));
            }

            var nrSpanBatch = ToNewRelicSpanBatch(otSpans);

            if (nrSpanBatch.Spans.Count == 0)
            {
                return(ExportResult.Success);
            }

            var result = await _spanDataSender.SendDataAsync(nrSpanBatch);

            switch (result.ResponseStatus)
            {
            case NewRelicResponseStatus.DidNotSend_NoData:
            case NewRelicResponseStatus.Success:
                return(ExportResult.Success);

            case NewRelicResponseStatus.Failure:
            default:
                return(ExportResult.FailedRetryable);
            }
        }