As zrzka points out there are many ways to do this. Here is one suggestion.
Use an NSOperationQueue and set async call to server 1 and 2 as dependencies on call to server 3. Here is an outline.
NSOperationQueue * queue = ...
// s1, s2 and s3 are blocks that do your work
NSOperation * server1 = [NSBlockOperation blockOperationWithBlock:s1];
NSOperation * server2 = [NSBlockOperation blockOperationWithBlock:s2];
NSOperation * server3 = [NSBlockOperation blockOperationWithBlock:s3];
[server3 addDependency:server1];
[server3 addDependency:server2];
// Now you can schedule
[queue addOperation:server1];
[queue addOperation:server2];
[queue addOperation:server3];