docs: def commit_batch(self, table_name, batch, timeout=None):
          '''
          Commits a :class:`~azure.storage.table.TableBatch` request.
  
          :param str table_name:
              The name of the table to commit the batch to.
          :param TableBatch batch:
              The batch to commit.
          :param int timeout:
              The server timeout, expressed in seconds.
          :return: A list of the batch responses corresponding to the requests in the batch.
          :rtype: list of response objects
          '''
          _validate_not_none('table_name', table_name)
  
          # Construct the batch request
          request = HTTPRequest()
          request.method = 'POST'
          request.host = self._get_host()
          request.path = '/' + '$batch'
          request.query = [('timeout', _int_to_str(timeout))]
  
          # Update the batch operation requests with table and client specific info
          for row_key, batch_request in batch._requests:
              batch_request.host = self._get_host()
              if batch_request.method == 'POST':
                  batch_request.path = '/' + _to_str(table_name)
              else:
                  batch_request.path = _get_entity_path(table_name, batch._partition_key, row_key)
              _update_request(batch_request)
  
          # Construct the batch body
          request.body, boundary = _convert_batch_to_json(batch._requests)
          request.headers = [('Content-Type', boundary)]
  
          # Perform the batch request and return the response
          response = self._perform_request(request)
          responses = _parse_batch_response(response.body)
          return responses