public void UsingAsync()
        {
            var requestUri = new Uri("http://google.com");
            var tasksNumber = 10;

            var count = 0;
            var sp = Stopwatch.StartNew();
            var results = new Result<Empty>[tasksNumber];

            for (var i = 0; i < tasksNumber; i++)
            {
                var index = i;
                var task = Await.Async(() =>
                {
                    var webRequest = WebRequest.Create(requestUri);
                    webRequest.GetResponse().Close();
                    Interlocked.Increment(ref count);
                });

                task(result => result.Match(x => results[index] = x));
            }

            while (results.Any(x => x == null))
            {
                Thread.Sleep(1000);
                Console.WriteLine("{0} - {1}, {2}", sp.Elapsed, count, results.Count(x => x == null));
            }
            Console.WriteLine(sp.Elapsed);
        }