This sounds like a problem with the group (this.enemies), not the texture. You may have destroyed the group and then tried to work on it in update() without recreating it.
I think scene.start("GameEndStage") is probably correct. I don’t understand why the this.enemies reference is bad after restarting, because it should have been recreated in create().
Unfortunately, I can’t post the whole GameScene. I debugged life cycle of the GameScene when the GameScene has this.textures.remove('enemy') in preload(). When the GameScene started first time, the sequence such preload() -> create() -> update() and console has warning No texture found matching key: enemy. When I started the GameScene second time, the sequence such preload() -> update() -> create() and console has error from my first post.
I reproduced this issue in an empty project. My code: Start game
import First from './First.js';
import Second from './Second.js';
const config = {
backgroundColor: '#000',
parent: "Game",
width: screenWidth,
height: screenHeight,
scene: [First, Second],
};
var game = new Phaser.Game(config);