If you fund a contract (ETH smart contract, which is different than a BCH script contract) and the contract then routes funds, that isn't non-custodial. Not legally at least.
some dapps are and some aren't, this delivers content and goes wallet to wallet, no smart contract in between https://enzypt.io