<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def chunk_upload_file(self, name, folder_id, file_path, progress_callback=None, chunk_size=1024*1024*1):
 """Upload a file chunk by chunk. The whole file is never loaded in memory. Use this function for big file. The callback(transferred, total) to let you know the upload progress. Upload can be cancelled if the callback raise an Exception. Args: name (str):
 Name of the file on your Box storage. folder_id (int):
 ID of the folder where to upload the file. file_path (str):
 Local path of the file to upload. progress_callback (func):
 Function called each time a chunk is uploaded. chunk_size (int):
 Size of chunks. Returns: dict. Response from Box. Raises: BoxError: An error response is returned from Box (status_code >= 400). BoxHttpResponseError: Response from Box is malformed. requests.exceptions.*: Any connection related problem. """


        try:
            return self.__do_chunk_upload_file(name, folder_id, file_path,
                                    progress_callback,
                                    chunk_size)
        except BoxError, ex:
            if ex.status != 401:
                raise
            #tokens had been refreshed, so we start again the upload
            return self.__do_chunk_upload_file(name, folder_id, file_path,
                                    progress_callback,
                                    chunk_size)