* Revert "Send all messages via keyspace notifications when a feature flag is enabled."
This reverts commit fadcf62166.
* Revert "Consolidate semaphore release logic."
This reverts commit c02b255766.
* Revert "Represent stored message state as an enumeration rather than a collection of booleans."
This reverts commit 89788fa665.
* Revert "Refactor: collapse state into semaphores/atomic booleans."
This reverts commit a052e2ee8f.
* Revert "Refactor: move sendNextMessagePage into its own method."
This reverts commit 158e5004b7.
* Revert "Avoid querying the database if we think all new messages are in the cache."
This reverts commit 6f9ff3be37.
* Revert "Query for more stored messages if an update happens while we're already processing a batch."
This reverts commit f766c57743.
* Revert "Only send the "queue cleared" message once per websocket session."
This reverts commit 8f53152c3e.
* Revert "Let processStoredMessages handle requery logic."
This reverts commit 7bbc88d716.
* Revert "Only allow one thread to process stored messages at a time."
This reverts commit 68256d2343.
* Parse and log the Twilio error code
* Automatically retry without sender ID when Twilio returns unreachable
* Remove attempt count and pass around whether or not sender id was used
* Remove arbitrary SMS code
This code has run its course and is no longer needed for now.
* Add elements to sample config that were left out
* Add a messaging service for NANPA
* Fixup sample config capitalization
The rules around selecting sender ids can get complicated with some
countries not supporting it and others requiring pre-registration that
may result in having a different sender id for that country than
others. This strategy class handles the logic of dealing with this
expanded configuration and applying the appropriate sender id or none
when it's not appropriate to do so at all.