Zig capped exponential backoff retry loop

Zig
const std = @import("std");

fn withRetry(max_attempts: usize, op: anytype) !u64 {
    std.debug.assert(max_attempts > 0);
    var prng = std.Random.DefaultPrng.init(@intCast(std.time.milliTimestamp()));
    const rnd = prng.random();
    var delay_ms: u64 = 100;
    var attempt: usize = 0;
    while (attempt < max_attempts) : (attempt += 1) {
        if (op()) |value| return value else |err| {
            if (attempt + 1 == max_attempts) return err;
            const jitter = rnd.intRangeAtMost(u64, 0, delay_ms);
            std.Thread.sleep(jitter * std.time.ns_per_ms);
            delay_ms = @min(delay_ms * 2, 10_000);
        }
    }
    unreachable;
}