The TaskCallback does those four things.

It's created by the TaskConsumer and endowed with the ability to commit a particular task when notify() is called. It's then given to the TaskRunner, which calls it when the task is done running and ready to commit.