diff --git a/src/client/actions/GuildMemberRemove.js b/src/client/actions/GuildMemberRemove.js
index <HASH>..<HASH> 100644
--- a/src/client/actions/GuildMemberRemove.js
+++ b/src/client/actions/GuildMemberRemove.js
@@ -8,8 +8,8 @@ class GuildMemberRemoveAction extends Action {
     let member = null;
     if (guild) {
       member = guild.members.get(data.user.id);
+      guild.memberCount--;
       if (member) {
-        guild.memberCount--;
         guild.members.remove(member.id);
         if (client.status === Status.READY) client.emit(Events.GUILD_MEMBER_REMOVE, member);
       }
diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js
index <HASH>..<HASH> 100644
--- a/src/structures/GuildMember.js
+++ b/src/structures/GuildMember.js
@@ -526,12 +526,7 @@ class GuildMember extends Base {
    */
   kick(reason) {
     return this.client.api.guilds(this.guild.id).members(this.user.id).delete({ reason })
-      .then(() =>
-        this.client.actions.GuildMemberRemove.handle({
-          guild_id: this.guild.id,
-          user: this.user,
-        }).member
-      );
+      .then(() => this);
   }
 
   /**
fix(Guild): memberCount not decrementing when an uncached member leaves

This leads to GuildMemberStore#_fetchMany to always reject
because it expects more member than possible.

Also no longer call the GuildMemberRemove handler locally
to not decrement twice.