def METHOD_NAME(self, dfs: List[DataFrame], entity_type: str) -> None:
    desc = "Uploading Nodes" if entity_type == "node" else "Uploading Relationships"
    pbar = tqdm(total=sum([df.shape[0] for df in dfs]), unit="Records", desc=desc)
    partitioned_dfs = self._partition_dfs(dfs)
    with ThreadPoolExecutor(self._concurrency) as executor:
        futures = [executor.submit(self._send_df, df, entity_type, pbar) for df in partitioned_dfs]
        for future in concurrent.futures.as_completed(futures):
            if not future.exception():
                continue
            raise future.exception()  # type: ignore