recover() using the standard transfer may not be able to retrieve some tokens
in `SecondaryRewarder.recover()` Using the standard `IERC20.transfer()` If `REWARD_TOKEN` is like `USDT`, it will not be able to transfer out, because this kind of `token` does not return `bool` This will cause it to always `revert`\\n`SecondaryRewarder.recover()` use for\\nAllows the Notional owner to recover any tokens sent to the address or any reward tokens remaining on the contract in excess of the total rewards emitted.\\n```\\n    function recover(address token, uint256 amount) external onlyOwner {\\n        if (Constants.ETH_ADDRESS == token) {\\n            (bool status,) = msg.sender.call{value: amount}("");\\n            require(status);\\n        } else {\\n          IERC20(token).transfer(msg.sender, amount);\\n        }\\n    }\\n```\\n\\nUsing the standard `IERC20.transfer()` method to execute the transfer A `token` of a type similar to `USDT` has no return value This will cause the execution of the transfer to always fail
```\\n    function recover(address token, uint256 amount) external onlyOwner {\\n        if (Constants.ETH_ADDRESS == token) {\\n            (bool status,) = msg.sender.call{value: amount}("");\\n            require(status);\\n        } else {\\n// Remove the line below\\n          IERC20(token).transfer(msg.sender, amount);\\n// Add the line below\\n          GenericToken.safeTransferOut(token,msg.sender,amount);\\n        }\\n    }\\n```\\n
If `REWARD_TOKEN` is like `USDT`, it will not be able to transfer out.
```\\n    function recover(address token, uint256 amount) external onlyOwner {\\n        if (Constants.ETH_ADDRESS == token) {\\n            (bool status,) = msg.sender.call{value: amount}("");\\n            require(status);\\n        } else {\\n          IERC20(token).transfer(msg.sender, amount);\\n        }\\n    }\\n```\\n