When executing arbitrary Runnable tasks, the run() method wasn't actually being invoked inside the proper execution thread. This fixes that and adds a test to verify.