   }
 }
 
+/**
+ Works as the normal reduce function for standar library but with futures
+ 
+ If all futures fails, the future will be rejected with the same error
+ 
+ Parameter futures: an array of futures to resolve
+ Parameter value: the initial value
+ Parameter combine: the reducer closure
+ 
+ Returns: future object
+ */
 public func reduce<A, B>(futures: [Future<A>], value: B, combine: (B, A) throws -> B) -> Future<B> {
   return future {
     let values = try await <- all(futures)

    throw NSError(domain: NSInternalInconsistencyException, code: -1, userInfo: nil)
  }
}



  
}

/**
 Designated static initializer for sync futures.
 The method executes the block asynchronously in background queue
