The workItemHandler uses the session you inject into its constructor to continue the process:
https://github.com/droolsjbpm/jbpm/blob/5.4.x/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/process/workitem/wsht/AsyncGenericHTWorkItemHandler.java#L270
is the session available and not disposed at the time you do task.complete?
Demian