    */
   @discardableResult func saveObjects<T: Codable>(_ records: [T], requestOptions: RequestOptions? = nil) throws -> BatchResponse {
     let operations = records.map { BatchOperation.add($0) }
-    let command = Command.Index.Batch(indexName: name, batchOperations: operations, requestOptions: requestOptions)
-    return try performSyncRequest(for: command)
+    return try perform(batchOperations: operations, requestOptions: requestOptions)
   }
   
   //MARK: - Get object

   */
  @discardableResult func saveObjects<T: Codable>(records: [T], requestOptions: RequestOptions? = nil, completion: @escaping ResultCallback<BatchResponse>) -> Operation {
    let operations = records.map { BatchOperation.add($0) }
    let command = Command.Index.Batch(indexName: name, batchOperations: operations, requestOptions: requestOptions)
    return performRequest(for: command, completion: completion)
  }
    
  /**

   */
  @discardableResult func deleteObjects(withIDs objectIDs: [ObjectID], requestOptions: RequestOptions? = nil, completion: @escaping ResultCallback<BatchResponse>) -> Operation {
    let operations: [BatchOperation] = objectIDs.map { .delete(objectID: $0) }
    return perform(batchOperations: operations, requestOptions: requestOptions, completion: completion)
  }

  /**
