final Callable function = (Callable) args[0];
TimerTask timeoutTask;
final int thisTaskId = taskId++;
final Object user = UserSecurity.currentUser();
IndividualRequest request = Client.getCurrentObjectResponse();
final Client session = request == null ? null : Client.getCurrentObjectResponse().getConnection();
return new Runnable(){
public void run() {
try{
if(session != null)
session.adoptThread(Thread.currentThread());
UserSecurity.registerThisThread(user);
Transaction.startTransaction();
function.call(PersevereContextFactory.getContext(), scope, null, new Object[]{});
Transaction.currentTransaction().commit();
}catch(Throwable e){