I'm about to write a control that has this defect. Why exactly is this bad?
Your ActiveX control has a common defect that single-threaded apartment (STA) ActiveX & COM objects must avoid: STA COM objects cannot perform blocking operations on the STA thread, unless the COM object also pumps Windows messages. Therefore, if your control needs to perform a synchronous blocking operation, it needs to implement a Windows message pump while waiting for the blocking operation to complete.
I don't want to pump messages while I block because that seems to cause my javascript toexecute in reentrant fashion. which is really bad.