I think that is fine. We check for null messages at a higher level.
It would be beneficial to not expose Node.
You can still have a private peekNode for poll.