Skip to content

Commit e691284

Browse files
feat: withTaskCancellationHandler for setProviderAndWait
Signed-off-by: Fabrizio Demaria <[email protected]>
1 parent 9ef1d4c commit e691284

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

Sources/OpenFeature/OpenFeatureAPI.swift

+15-7
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,23 @@ extension OpenFeatureAPI {
9292
}
9393

9494
public func setProviderAndWait(provider: FeatureProvider, initialContext: EvaluationContext?) async {
95-
var holder: [AnyCancellable] = []
96-
await withCheckedContinuation { continuation in
97-
let stateObserver = provider.observe().sink {
98-
if $0 == .ready {
99-
continuation.resume()
95+
let task = Task {
96+
var holder: [AnyCancellable] = []
97+
await withCheckedContinuation { continuation in
98+
let stateObserver = provider.observe().sink {
99+
if $0 == .ready {
100+
continuation.resume()
101+
holder.removeAll()
102+
}
100103
}
104+
stateObserver.store(in: &holder)
105+
setProvider(provider: provider, initialContext: initialContext)
101106
}
102-
stateObserver.store(in: &holder)
103-
setProvider(provider: provider, initialContext: initialContext)
107+
}
108+
await withTaskCancellationHandler {
109+
await task.value
110+
} onCancel: {
111+
task.cancel()
104112
}
105113
}
106114
}

0 commit comments

Comments
 (0)