The guarantee was already there
A data race has a precise definition, given in the lesson Threads and Shared State: two accesses to the same memory location, from different threads, at least one a write, with no ordering between them.
Read that against the previous lesson. Multiple accesses to one location is aliasing. At least one write is mutation. A data race is aliasing plus mutation, which is exactly the intersection the borrow checker forbids.
So the guarantee falls out. Rust did not add thread-safety analysis on top of the borrow checker; the borrow checker was already prohibiting the condition that makes data races possible, and extending it across threads is a matter of bookkeeping rather than new machinery.
That is the substance behind the phrase fearless concurrency. It is not a claim that concurrent programming becomes easy. It is the narrower claim that one specific and vicious class of bug, the kind that appears once a week under load and cannot be reproduced, is rejected at compile time.
The remaining difficulties are undiminished, and the last step of this lesson is about them.

