disconnect cannot tolerate certain types. Fix (hopefully correct) one of...

... the anonymous fn not always return value messages. Also, broke icons not disappearing when app closed. This should be fixed.
For some reason the API does not accept some of the input when you just pass the disconnect function directly to forEach. I think this has something to do with this being a thin layer over C-apis. In any case, this unbreaks what I broke here, which caused a new exception.