Like `transfer`, `approve` may fail by returning `false`. Should `TransferHelper` have a function `safeApprove`?