S4 now uses task objects with callback blocks. API Breaking Change!

Example

task = [self.s4 getBuckets];
task.onDone = ^(NSArray* buckets) {
  self.buckets = buckets;
};
task.onError = ^(NSError* error) {
  [self handleError:error];
};