I am quite confuse about this. Took it from the TransparentProxy contract.
Let's say I have an implementation contract A, I have a proxy that I initialise with this contract A.
I have a new implementation contract B that has its own initialiser, if I try to call
upgradeToAndCall I get an
Error: VM Exception while processing transaction: reverted with reason string 'Initializable: contract is already initialized .
I guess it makes sense that I cannot initialise a contract twice so I am guessing I cannot call an second implementation contract with a