Replace synchronous setting of a flag with async setting of the flag. This helps speed up message display time (anecdotally)
Marking a message as read in the database is currently very expensive, especially if you have threading enabled.

Defer that until _after_ telling listeners that they're cool to show the message
Opening a folder (especially in threaded mode) does a very heavy SQL query. This method doesn't use or modify the folder object.  Don't cargo-cult the Open here.

(cketti may well tell me I'm wrong about this. Happy to listen & fix)