How does async data transmission actually work?
For the most common asynchronous serial communications the protocol requires the transmit and receive ends to agree on the data signalling rate and the data format. Format being an agreement between ends as to number of bits to expect from start bit through stop bit. Knowing this the receiver just has to synchronize itself on the leading edge of the start pulse. The receiver will also use a sampling clock that is a multiple of the agreed upon data signalling rate such as 16 times as fast. Then the receiver can count 8 clocks from the start bit edge and arrive at the center position of the start bit. From there the samples it takes every 16 clocks will be the data bit value for the expected number of bits. If the last one is not the expected level of a stop bit the receiver then knows to post an error.

I just described the simplest version. There are other receiver algorithms that will also see when the edges of the data changes occur within the start to stop bit interval and may shift their reference center position of the bit one clock either way in an attempt to track signalling distortion to some degree. Another scheme used is to sample the data three times around the bit center position and require that all three samples be the same. If not all the same the receiver posts an error as it realizes that the data is changing during the center time of the bit which indicates an out of sync situation.