Promises will no longer emit complete if already completed, they will just call the handler directly (solves issue of complete listeners firing multiple times instead of just once). Taskgroup now uses done to listen for completion on tasks.