I'm going to be having a secondary thread calling nsIObserverService::notifyObservers(). nsIObserverService does not define which thread the registered observers will be notified on (at least, according to the IDL).
It would be very useful to have this actually specified. Currently guessing this will be whichever thread the notify was on, but please actually say that in the IDL because I'm probably wrong :p
fixed by bug 326491, nsXPCOMCID.h now says:
* Observer Service ContractID
* The observer service implements the global nsIObserverService object.
* It should be used from the main thread only.
#define NS_OBSERVERSERVICE_CONTRACTID "@mozilla.org/observer-service;1"