The `member_removed` and `channel_vacated` webhooks are delayed 3 seconds from when a socket appears to have disconnected. This is to stop unnecessary webhooks being sent to your servers when a socket disconnects and then immediately reconnects. This sort of event is fairly common with page navigations in web apps or with mobile clients that are using a cellular connection and may be in an area with spotty signal.
If the client reconnects within the 3 second delay then the `member_removed` and/or `channel_vacated` webhook(s) will not be sent. Otherwise, once the 3 seconds has elapsed, the webhook(s) will be sent.