Today, if there’s a digest mismatch in a foreground read repair, the insert to update out of date replicas is blocking. This means, if it fails, the read fails with a timeout. If a node is dropping writes (maybe it is overloaded or the mutation stage is backed up for some other reason), all reads to a replica set could fail. Further, replicas dropping writes get more out of sync so will require more read repair.
The comment on the code for why the writes are blocking is:
but the bad side effect is that reads timeout. Either the writes should not be blocking or we should return success for the read even if the write times out.