Indeed, it seems I am: "code holding a spinlock" != "code spinning". My apologies.
By the way, in your scenario (if I'm not off the mark again) at the step 5, the task A wouldn't spin, since B isn't running. Instead, A would block immediately, awakening B and taking the lock.