See T7689 . The key idea here is to separate "global" status updates (not specific to a particular message) from the "info-fetched" command (specific to a particular message). This actually even simplifies the protocol a little, resulting in a net removal of a bit of code.
With this patch, removal of drafts is visible, immediately. Addition of drafts still does not show until switching to a different message (but at least it *does* show without having to restart the native client). The reason for not addressing this part of the problem is - again - T7972: We need an email-address as a handle for each message, and this is not available in the DraftManager. It would be possible to hack in that info, but in light of our plan to move away from email-address as a mapping key, that does not seem to go into the right direction.
I'm omitting the generated .js-code to reduce noise. You need to do npm run build. Patch corresponds to the branch work/tfry/refresh_draft_list.