Instead of waiting for all queued functions to finish
- Different constructor parameters - id property for logging - fcall() -> start() - add() to enqueue without starting - runAll() to run down queue and return promises for all current tasks - wait() to wait for all running tasks to finish