TNTPrimed#getSource() can return null, I know.
But..
If player ignites TNT block using Flint and Steel, and then will die due to TNT explosion, getSource() method will return null instead of this player. But if player depart to a safe distance from TNT, source will return player entity.
In other words, getSource() will return null if the player is dead at the moment of method call.