Fix bug where we may not cancel one of the tasks in invokeAll with a timeout
Slightly simpler way to do this execution
Merge branch 'master' into unstable_staging