Fans a message out to every channel, dropping the ones the bot can no
longer reach.
A customer removing the bot from a single channel used to take down
delivery for all of them: the rejection escaped this method, escaped the
SNS handler, and SNS retried an event that could never succeed. Each retry
re-posted to the channels that had already accepted the message — a
fan-out cannot un-send what its siblings delivered before the rejection
surfaced — so one dead channel produced duplicates everywhere else and
then a DLQ entry.
Permanently unreachable channels are therefore logged and skipped.
Everything else still throws, so a rate limit or a Slack outage keeps the
retry that will actually clear it.
Fans a message out to every channel, dropping the ones the bot can no longer reach.
A customer removing the bot from a single channel used to take down delivery for all of them: the rejection escaped this method, escaped the SNS handler, and SNS retried an event that could never succeed. Each retry re-posted to the channels that had already accepted the message — a fan-out cannot un-send what its siblings delivered before the rejection surfaced — so one dead channel produced duplicates everywhere else and then a DLQ entry.
Permanently unreachable channels are therefore logged and skipped. Everything else still throws, so a rate limit or a Slack outage keeps the retry that will actually clear it.