To ask us whether you should have cancelled, we can't answer. If communication stopped on one side, that might have been different, but since you were both in communication during the delay, and you had no way of knowing that she had other appointments, or that the session was going to be bad, how would you (or we) know if you should have cancelled. (20/20 hindsight)
I had an experience about a year ago where I was seeing someone for the first time. There was unexpected traffic delays, and roadwork construction on her street. So I was running late, but figured it would be Just 10 or 15 minutes late. I contacted her about 10 minutes before the scheduled appointment time to let her know, then we kept in contact every 5 minutes or so to update on progress. At some point I realized I would be even later than 15 minutes, so I offerred to reschedule if it would work better for her. She said it was ok to still come now so I kept trying to get there. Finally reached her building, and then realized I couldn't park where she told me to. (vehicle too tall for the structure) so another ten minutes to find parking, then walk/run several blocks to her incall. I finally reached the lobby where she told me to come to and call her, about 40 minutes after our scheduled start time, and now she wasn't answering her calls and texts.
I decided to wait there instead of leaving just yet, and sent two more apology texts. Then about 10 minutes later a woman who looked like the pictures in the ad showed up and said, "are you looking for xx?" I told her yes and apologized for being late again even though it wasn't my fault there were traffic delays and my truck didn't fit in her building's parking structure. She said we would have to reschedule, because she had stepped out of her apartment and realized she locked the keys inside and left her phone in (which is why she had stopped replying to me). She had to go to a payphone to call her building manager to let her back in, but he was out and wasn't going to be back for an hour. I told her I was actually free that day and I was still willing to see her if she was ok with it. We ended up waiting together for her bldg. manager to come back and let her in to her apartment. went to a little convenience store, bought some waters, and snacks, and talked about all kinds of things, and got to know each other. We finally had the appointment about 2 hours after the original scheduled time and I had an awesome time with her and repeated with her 5 times! (until she left the state) That experience gave us something funny to talk about at future visits.
So anyway that just shows you how a similar situation to yours had a totally different outcome. That makes it hard to say "you should have cancelled.