diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c
index 67700027ef802d86dc93294c35107ce63c77ff34..eb7aa6f01d337cf6fbef2659aa2f56edad1eccc1 100644
--- a/src/lib/swim/swim.c
+++ b/src/lib/swim/swim.c
@@ -2014,8 +2014,8 @@ swim_quit(struct swim *swim)
 		 swim_encode_quit(swim, &task->packet);
 	assert(rc == 2);
 	mp_encode_map(header, rc);
-	swim_quit_step_complete(task, &swim->scheduler, 0);
 	swim->self->status = MEMBER_LEFT;
+	swim_quit_step_complete(task, &swim->scheduler, 0);
 }
 
 struct swim_member *