BaconographyWP8.PlatformServices.SimpleHttpService.ThrottleRequests C# (CSharp) Method

ThrottleRequests() public static method

public static ThrottleRequests ( ) : Task
return Task
        public static async Task ThrottleRequests()
        {
            _cancelationTokenSource.Token.ThrowIfCancellationRequested();
            var offset = DateTime.Now - _lastRequestMade;
            if (offset.TotalMilliseconds < 1000)
            {
                await Task.Delay(1000 - (int)offset.TotalMilliseconds);
            }

            if (_requestSetCount > 15)
            {
                var overallOffset = DateTime.Now - _priorRequestSet;

                if (overallOffset.TotalSeconds < 30)
                {
                    var delay = (30 - (int)overallOffset.TotalSeconds) * 1000;
                    if (delay > 2)
                    {
                        for (int i = 0; i < delay; i++)
                        {
                            _cancelationTokenSource.Token.ThrowIfCancellationRequested();
                            await Task.Delay(1000);
                        }
                    }
                    else
                        await Task.Delay(delay);
                }
                _requestSetCount = 0;
                _priorRequestSet = DateTime.Now;
            }
            _requestSetCount++;

            _lastRequestMade = DateTime.Now;
        }