[core] task.execute() gets a Thread.join() call to avoid exiting w/o output/error