public void ThrottleIfNecessary()
        {
            if (PreventThrottle)
            {
                return;
            }

            var reset = false;

            if (currentWeigth > RequestLimitPerMinute)
            {
                RequestThrottleResetEvent.Reset();

                RequestMinRemainingMs = (RequestLimitIntervalStartTime.AddMinutes(1).Ticks - DateTime.Now.Ticks) /
                                        TimeSpan.TicksPerMillisecond;

                Logger.LogFatal($"Binance Rate Limit Exceeded. Throttling request for {RequestMinRemainingMs}ms");

                if (RequestMinRemainingMs > 0)
                {
                    Thread.Sleep((int)RequestMinRemainingMs);
                }

                RequestThrottleResetEvent.Set();

                reset = true;
            }

            if (reset || DateTime.Now > RequestLimitIntervalStartTime.AddMinutes(1))
            {
                currentWeigth = lastWeigth;
                RequestLimitIntervalStartTime = DateTime.Now;
            }
        }