private void SleepBackOffMultiplier(int continuousErrorsCount)
{
if (continuousErrorsCount == 0) return;
const int MaxSleepMs = 60 * 1000;
//exponential/random retry back-off.
var nextTry = Math.Min(
rand.Next((int)Math.Pow(continuousErrorsCount, 3), (int)Math.Pow(continuousErrorsCount + 1, 3) + 1),
MaxSleepMs);
if (Log.IsDebugEnabled)
Log.Debug("Sleeping for {0}ms after {1} continuous errors".Fmt(nextTry, continuousErrorsCount));
TaskUtils.Sleep(nextTry);
}