This Proxy should only be used for learning purposes!
One thing that it does not do is return the return value in the fallback function.
This can only be done by dropping down into assembly code, as shown by the OpenZeppelin proxy logic here.
In general, you should try to stick to using proxies that are audited and battle tested!