in FBControlCore/Async/FBFuture.m [104:124]
static void final_resolveUntil(FBMutableFuture *final, dispatch_queue_t queue, FBFuture *(^resolveUntil)(void)) {
if (final.hasCompleted) {
return;
}
FBFuture<id> *future = resolveUntil();
[future onQueue:queue notifyOfCompletion:^(FBFuture<id> *resolved) {
switch (resolved.state) {
case FBFutureStateCancelled:
[final cancel];
return;
case FBFutureStateDone:
[final resolveWithResult:resolved.result];
return;
case FBFutureStateFailed:
final_resolveUntil(final, queue, resolveUntil);
return;
default:
return;
}
}];
}