bug 1058698 - async ContentWorker

i tried, turned out to be not much savings because of the need to unregister the observer before `done()`.