public static async Task <string> SubmitAndReceive(PiwikAnalytics analytics, string url, int statusCode = 200)
        {
            var tokenSource = new CancellationTokenSource();

            var receivedData = PiwikMocker.Receive(url, tokenSource.Token, statusCode);
            var dispatched   = await analytics.Dispatch();

            if (dispatched)
            {
                return(await receivedData);
            }

            tokenSource.Cancel();
            return("");
        }
        public async Task TestConnectionErrorWhileDispatching()
        {
            analytics.TrackPage("Main");

            await analytics.Dispatch();

            Assert.That(analytics.UnsentActions, Is.EqualTo(1));

            var receivedData = PiwikMocker.Receive(url);

            Thread.Sleep(100); // delay before dispaching to make sure the mocked server has opend the port
            await analytics.Dispatch();

            await receivedData;

            Assert.That(analytics.UnsentActions, Is.EqualTo(0));
        }