This is part 3 of my comment on D7388:
Part of the issue is that sendCallbacks would not be triggered from a retry. So if a user searched for a thread with an already-existing local pending message (that failed to send), the retry of the failed message would not clear the "search". This problem exists for native as well, and is addressed in yet another diff later in the stack.
Depends on D7407