done() callbacks fire after `this.remaining` and `this.complete` are updated
Fire `this.oncomplete` if it exists
Change names of arguments passed to callbacks
Whitelist properties coming from options object