When a user click aways from the compose box, we immediately turn their current message into a "draft," but the next time they return to the compose box, even if they haven't navigated anywhere else, we clear the compose box as if they are going to compose a brand new message.
There's a mechanism to restore the prior draft, but it's not super discoverable, and it's also surprising for some users that we don't just have their prior draft already there, especially when they're on the same narrow.
The history behind this is that we'd rather inconvenience individual users by having them restore drafts than inconvenience multiple users by making it too error prone to send a message to the wrong stream.
There are probably scenarios where the "mixing" risk is low enough that we might want to err more toward making it convenient for users to have their draft sitting there for them. It is certainly a common thing to be drafting a message, then you need to read something elsewhere on Zulip for reference, then going back to continue your draft.
Some other improvements would be to have drafts scoped to particular streams or narrows, so that when I restore a draft, it is what I was last writing for that particular stream.
Finally, some kind of user-invoked draft mechanism would be nice, where I can explicitly say "save this for later, I'll come back to it."
I'm working on this.