code: def add_callback(self, fn, *args, **kwargs):
          
          if not callable(fn):
              raise ValueError("Value for argument 'fn' is {0} and is not a callable object.".format(type(fn)))
          self._callbacks.append((fn, args, kwargs))
docs: Add a function and arguments to be passed to it to be executed after the batch executes.
  
          A batch can support multiple callbacks.
  
          Note, that if the batch does not execute, the callbacks are not executed.
          A callback, thus, is an "on batch success" handler.
  
          :param fn: Callable object
          :type fn: callable
          :param \*args: Positional arguments to be passed to the callback at the time of execution
          :param \*\*kwargs: Named arguments to be passed to the callback at the time of execution