rem: ctxt.locked = false; ctxt.processQueue(); 
add: ctxt.unlock(); 
context:     onStopRequest: function(request, ctxt, status, errorMsg)    {        ctxt = ctxt.wrappedJSObject;        var channel;        try {            channel = request.QueryInterface(Components.interfaces.nsIHttpChannel);            dump(channel.requestSucceeded+"\n");        } catch(e) {        }        if (channel && !channel.requestSucceeded) {            ctxt.mObserver.onError(channel.requestSucceeded,                                   "Publishing the calendar file failed\n" +                                       "Status code: "+channel.responseStatus+": "+channel.responseStatusText+"\n");        }        else if (!channel && !Components.isSuccessCode(request.status)) {            ctxt.mObserver.onError(request.status,                                   "Publishing the calendar file failed\n" +                                       "Status code: "+request.status.toString(16)+"\n");        }        // Allow the hook to grab data of the channel, like the new etag        ctxt.mHooks.onAfterPut(channel);        ctxt.locked = false;        ctxt.processQueue();    },
meta: 5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/5872/01bf648181eac36b1b284f1973bbc0f6deb744e4/calICSCalendar.js/buggy/calendar/providers/ics/calICSCalendar.js