TFTP operates in simple lock-step: there is only ever one packet outstanding at any time, and every packet received by either party caused one packet to be sent in reply (until the termination of the transfer).
TFTP was also, like all protocols designed to operate across an unreliable network, includes timeouts.