It is indeed shady behaviour to not give you the codes. That's what you paid for.
IME code readers, like the old Krypron tuners of my youth, are only as good as the man reading them. Many yeares ago, on the Fiesta above, I had a high speed misfire. I ran it in for a diag, the mechanic said it was carb icing as a result of a faulty hot air flap that decided whether to such air from a hotbox around the ex manifold or from the outside. It was July, so icing is unlikely and even I know the difference between a slow strangulation as a result of ice buildup and a sudden ignition cut followed by a recovery. I bought an air flap device then checked the existing one out - guess what? It worked perfectly. Backed it, had another diag at another garage, faulty Hall switch. That sounds more likely, job done, £40 parts, same labour, done. This man actually knew how to diagnose faults.
Fast forward 20 years, last year I had a ratty old Vectra that started failing to start when hot. Code reader said "ECU fault" at 3 different garages. "New ECU mate, £1100 fitted". I don't think so. Regular readers here may remember the tale, in short it turned out to be a dicky connection. Nobody had the good sense to understand that if you pull a lead off an ECU the computer flags it as "ECU fault". I was lucky, I was working at the other end of the country and needed a car, had the car been worth anything I'd have coughed £1100 for nothing and put it down to maintenance. Again a mechanic who knew his stuff would do some proper diagnosis, but then again if you know how to diagnose faults on complex electrical systems are you going to hang around a car dealership, getting filthy every day for £7 an hour and spending 6 days a week doing oil changes and brake pads? Not many.