I have a question on SafeERC20. I have incorporated it into our project. I tried it with a well-known non-standard contract. I cloned the non-standard contract repo locally and deployed it to my local chain. When I was using ERC20’s approve on this non-standard contract it was failing. After I made the changes for SafeERC20 [with using SafeERC20 for IERC20; and moving transfer to safeTransfer etc.] the approve and subsequent transfer started working as expected.
Thank you for your feedback. I am using ethers.js and more or less I am using exactly the equivalent version of your example code (with approve) and it is working fine. However, I still have this burning question.