Dlaczego blok Objective-C nadal działa bez kopiowania go do sterty?

W mojej klasie mam prostą metodę:

- (void)getFormWithBlock:(DataCenterResultBlock)block {
    [SomeClass doSomeLongOperationWithParam:someParam 
                                  completionBlock:^(NSData *data, NSURLResponse *response) {
                                      //Success
                                      block(aVar, YES);
                                  } errorBlock:^(NSError *error) {
                                      //Failed
                                      block(nil, NO);
                                  }];
}

Czytałem, że powinieneś kopiować bloki na stertę, jeśli robisz coś asynchronicznie, ponieważ są one przydzielane na stosie i gdy drzewo połączeń przewinie się, zniknie.

Ale tutaj nie kopiuję go na stertę, ale nadal nie mam awarii. Czemu? Dzięki