60 items
Resilient Fetch With Dedup And Backoff
Code QuizRetry Wrappers vs. Resource Timeouts
QuizWebSocket Listener Drops Messages
Code QuizChoosing Transport for a Live Feed
QuizRetries, Backoff, Timeouts & Dedup
Slides / VideoResilient URLSession: Retries, Backoff & Dedup
FlashcardPaginated Query Cache Key Bug
Code QuizURLCache and Pagination Data Layers
QuizExponential Backoff Sleep Bug
Code QuizTimeouts and Cancellation in URLSession
QuizCaching & Pagination in URLSession Layers
FlashcardCaching, Pagination & Fetch Layers
Slides / VideoCertificate Pinning Fallback Flaw
Code QuizHTTP/2, Pinning & Radio Cost
QuizRetry Loop Ignores Cancellation
Code QuizResilient Retry & Idempotency Design
QuizRetrying Authenticated Requests
Code QuizRetrying Requests on Flaky Networks
QuizFetching JSON With URLSession dataTask
Code QuizFetching REST Data with URLSession
QuizMobile Transport & Security Deep Dive
Slides / VideoResilient Networking Design
Slides / VideoREST Fetching with URLSession
Slides / VideoMobile Transport & Security Tradeoffs
FlashcardResilient Networking Design with URLSession
FlashcardREST Data Fetching in iOS
FlashcardLoading, Error, and Empty States
Code QuizHandling UI States for Network Calls
QuizAsync REST Call with URLSession
Code QuizAsync REST Calls with URLSession
QuizLoading, Error & Empty States
Slides / VideoREST Calls with Async/Await
Slides / VideoLoading, Error & Empty States
FlashcardREST Calls with async/await
FlashcardRetry Loop Swallows Cancellation
Code QuizResilient HTTP Retries and Backoff
QuizNetwork Reliability: Retries, Timeouts & Connectivity
Slides / VideoNetwork Reliability Basics
FlashcardResilient HTTP on Flaky Networks
Slides / VideoResilient HTTP on Flaky Networks
FlashcardAuth Header and Flaky Connection Config
Code QuizAuth Tokens & Timeouts in URLSession
QuizURLSession Fetch With Loading State
Code QuizHandling Loading and Error States in URLSession
QuizAuth Tokens & Resilient Networking
Slides / VideoURLSession Requests & Loading States
Slides / VideoAuth Tokens & Resilient Requests
FlashcardURLSession Requests & Loading/Error States
FlashcardHandling URLSession Errors Safely
Code QuizDetecting Network Failures
QuizFetching JSON with URLSession
Code QuizChecking HTTP Status Codes
QuizLoading, Errors & Flaky Networks
Slides / VideoREST APIs with URLSession Basics
Slides / VideoHandling Loading, Errors & Flaky Networks
FlashcardREST Requests with URLSession
FlashcardURLSession Errors & Retry Resilience
Slides / VideoREST Calls with URLSession & Async
Slides / VideoHandling Network Errors & Retries
FlashcardREST Calls & Async Responses in URLSession
FlashcardResilient Fetch With Dedup And Backoff
A request-coordinating actor combines retries, exponential backoff, and in-flight deduplication — but its backoff never actually delays.
actor RequestCoordinator {
private var inFlight: [URL: Task<Data, Error>] = [:]
func data(for url: URL, maxAttempts: Int = 3) async throws -> Data {
if let task = inFlight[url] {
return try await task.value // dedup: join in-flight request
}
let task = Task { try await self.fetchWithRetry(url, maxAttempts: maxAttempts) }
inFlight[url] = task
defer { inFlight[url] = nil }
return try await task.value
}
private func fetchWithRetry(_ url: URL, maxAttempts: Int) async throws -> Data {
for attempt in 0..<maxAttempts {
do {
let (data, resp) = try await URLSession.shared.data(from: url)
guard let http = resp as? HTTPURLResponse,
200..<300 ~= http.statusCode else {
throw URLError(.badServerResponse)
}
return data
} catch {
try Task.checkCancellation()
let delay = pow(2.0, Double(attempt)) // seconds: 1, 2, 4
try await Task.sleep(nanoseconds: UInt64(delay))
}
}
throw URLError(.cannotLoadFromNetwork)
}
}The dedup and cancellation logic are correct, but the backoff is broken. What is the bug and its fix?