'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'

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))
