In my opinion it makes more sense to emit the KICK and PART event once the client has finished updating what it needs to.
I remember having some problems due to this when I was running a bot of mine, the biggest issue being accessing the channel's object before it was updated (within listeners for KICK and PART).
A definite plus one to this one from me. It would be nice to have some consistency in when the events are emitted — the JOIN event and others perform logic before the event.
In my opinion it makes more sense to emit the KICK and PART event once the client has finished updating what it needs to.
I remember having some problems due to this when I was running a bot of mine, the biggest issue being accessing the channel's object before it was updated (within listeners for KICK and PART).