This is a fix for [ENG-8968](https://linear.app/comm/issue/ENG-8968/sending-sequential-create-thread-and-send-text-message-cause-messages).
In the previous implementation, `peerToPeerMessageHandler` was not always reactive to state changes, this scenario was possible:
1. `peerToPeerMessageHandler` is a callback and memoized based on current dependencies.
2. `tunnelbrokerMessageListener` is invoked two times in a row with `create_thread`, and `send_text_message`. There is a promise created for `create_thread` and immediately there is a second one spawned for `send_text_message` (with the memoized value of `peerToPeerMessageHandler`).
3. Promise for `create_thread` is resolved, it causes some changes in the thread store.
4. Promise for `send_text_message` is starting, but it is using the memoized value of `peerToPeerMessageHandler` (from point 1), at that time, the DM thread is not yet in the store, so this fails because there is no thread associated with the text message.
This fix makes sure, that we always use an updated version of `peerToPeerMessageHandler`. Instead of changing promises, use messages queue, `peerToPeerMessageHandler` is called right before execution, not ahead of time.