In case MarketplaceService:PlayerOwnsAsset() throws an error, doesPlayerOwnAsset will return a string and not a boolean, without an extra check on _success, this code will think someone owns the asset whenever PlayerOwnsAsset fails to execute properly. This may not be the desired behaviour.
A solution would be changing if doesPlayerOwnAsset then to if _success and doesPlayerOwnAsset then as that is likely the desired behavour.
Another solution is handling it differently, such as adding the following:
if not _success then
print("PlayerOwnsAsset call failed: ", doesPlayerOwnAsset)
return
end