use client EventEmitter to capture "task" and "ack" events