ReadMessage PromptFunction is called forever.
If PromptFunction returns the correct key the first time, then decryption succeeds. If, however, you return the correct key any time after the first time then decryption will never succeed and PromptFunction gets called forever.