Handles failures for triggerable java service tasks

What is a failure in this case? Is it a timeout → if so use a timer boundary event. Or is it a state being sent back? If so, why not model it with a loop back to the service task and store a process variable with a counter?