Another thought…
Perhaps 'async_task_route()' automatically creates a transaction, which is why I was having problems with the calls to 't_newtran()' and 't_release()' after the route had been changed to execute through 'async_task_route()'.
If so, then maybe it's safe for my async presence route to not call 't_newtran()' and 't_release()'.
Thanks.