invokeAndAwait

internal suspend fun invokeAndAwait(messageId: String, conversationId: ConversationId): MessageOperationResult

Retries the existing persisted message and returns its actual upload/send result. Work belongs to the calling coroutine, rather than the session's fire-and-forget scope. Cancellation waits for upload/send unwinding and marks unfinished delivery failed before leaving; confirmed successful sends remain sent. No automatic network resend is scheduled. A send skipped because the message is no longer eligible cancels the retry without failure-state cleanup. The message ID and uploaded remote data are preserved.