Ending a task instance generally results in the related token being signaled, you should not be signaling the token separately.
In addition, calling TaskInstance.end() or Token.signal() without parameters results in the default transition being taken, you should not be calling token.getAvailableTransitions().iterator().next() to retrieve the transition.
Hope this helps.