"Sarah doesn't want me to tell my husband because she thinks he will lose respect for her but I think he'll actually stick up for her and not want me to tell Emma because he thinks a lot of Sarah."
Sarah wants to have her cake and eat it too.
So, Sarah wants to continue shagging John behind Emma's back and destroying Emma's marriage, and she wants you to lie to your husband and put your marriage under strain, because don't kid yourself that it won't.
Sarah is not your friend. The Sarah that you think of as "like my right arm" was an illusion she maintained for her own ends. She has lied to you to four years and at the first opportunity shifted the burden of secrecy off her own back and on to yours. With a side-order of strain on your marriage. Fuck. That. Shit.
She could have kept her dirty little secret to herself. Made up some guff about John dropping something over, picking up something she'd borrowed or coming to help her with something. But no, she pulled you straight in to her affair, she "instantly told me she's been seeing him for 4 years", she "blurted it out to me without even trying to cover up ". She burdened you with her secret and asked you to lie to your husband so that she could still be the Golden Girl in your husband's eyes. Sarah is not your friend.
Do not allow Sarah's wishes to cause a rift in YOUR marriage. Talk to your husband, because keeping Sarah's secret will eat you up and spit you out. Be honest with your husband. If he doesn't respect her it will be because of her actions not your truthfulness.
"Sarah said she doesn't expect him to leave Emma yet but she thinks he will one day when things are easier for them."
She's kidding herself. And yes, it's possible, as others have mentioned, that her telling you is a calculated move to force John's hand. In which case, she's even less of a friend to you to use you in that way, but nonetheless, tell your husband. Don't bear her burden.