* The apos object is now a standard node EventEmitter * addDiffListener replaced with a 'diff' event posted via the event emitter * All tasks post before and after events * Listeners for events like task:apostrophe:migrate:before or :after can call apos.taskBusy to signify they are going to do async work after returning, and must then call apos.taskDone when the work is done * Listeners can also call apos.taskFailed to signal that the process exit code should not be 0 * Tasks do not exit until all listeners that called apos.taskBusy have called apos.taskDone
* The apos object is now a standard node EventEmitter
* addDiffListener replaced with a 'diff' event posted via the event emitter
* All tasks post before and after events
* Listeners for events like task:apostrophe:migrate:before or :after can call apos.taskBusy to signify they are going to do async work after returning, and must then call apos.taskDone when the work is done
* Listeners can also call apos.taskFailed to signal that the process exit code should not be 0
* Tasks do not exit until all listeners that called apos.taskBusy have called apos.taskDone

eskan/apostrophe,dj31416/apostrophe,existanze/apostrophe,kwangkim/apostrophe,eskan/apostrophe,kwangkim/apostrophe,the1sky/apostrophe,the1sky/apostrophe,punkave/apostrophe,the1sky/apostrophe,williamfortunademoraes/apostrophe,punkave/apostrophe,Klaudit/apostrophe,Klaudit/apostrophe,existanze/apostrophe,williamfortunademoraes/apostrophe,existanze/apostrophe,kwangkim/apostrophe,allensh929/apostrophe,Klaudit/apostrophe,the1sky/apostrophe,dj31416/apostrophe,allensh929/apostrophe,eskan/apostrophe,eskan/apostrophe,dj31416/apostrophe,dj31416/apostrophe,williamfortunademoraes/apostrophe,allensh929/apostrophe,existanze/apostrophe,williamfortunademoraes/apostrophe,kwangkim/apostrophe,allensh929/apostrophe,Klaudit/apostrophe