I'm not sure about the embedded receive within a gen_server. Generally raw messages should be handled by a handle_info callback.
So one option would be to use noreply and store From and then in handle_info use gen_server:reply.