It looks like a bug, to me. Adding some debug `message` calls, I see that the first `n` (after `p p`), correctly calls `my-forward-word`, but the second `n` then is interpreted in `my-backward-word-map`, not in `my-forward-word-map`.

IOW, the call in `my-forward-word` of `(set-transient-map my-forward-word-map t)` seems to have no effect.