# Повторный запуск операции, требующей single-flight

RuleID: portfolio.async.04@1.0.0
Status: recovery-required
Catalog snapshot: 4558458d

Accepted subset is bounded. If required evidence is incomplete, the affected result is unknown.

## V-ASYNC-04 — Повторный запуск операции, требующей single-flight

Проверка кэша с последующим await позволяет нескольким callers одновременно запустить одну дорогую операцию.

Status: recovery-required

Scope notes: Source producer требует восстановления и квалификации. Если необходимые факты не получены, результат — unknown, а не «ошибки нет».

### Before (illustrative)

```swift
if let value = cache[key] { return value }
let value = await fetch(key)
cache[key] = value
```

### After (illustrative)

```swift
// До await зарегистрировать in-flight Task по key.
// Остальные callers ждут тот же результат.
// Удалять запись по завершении и при ошибке.
```

Boundary: Дублирование допустимо без coalescing/idempotency contract

---
Language: ru
Canonical: https://docs.swift-analyzer.com/catalog/portfolio.async.04/
Source revision: 4558458d
