Retiring Rep. Ryan Costello (R-Pa.) watched his district fall to a Democrat by 17 points last night. He watched his party lose control of the House.

Then, this afternoon, he watched President Trump hold a news conference and mock more than half a dozen moderate Republicans who lost Tuesday’s election (“Mia Love gave me no love. And she lost. Too bad,” the president said, for example.)

And then Costello raged.

To deal w harassment & filth spewed at GOP MOC’s in tough seats every day for 2 yrs, bc of POTUS; to bite ur lip more times you’d care to; to disagree & separate from POTUS on principle & civility in ur campaign; to lose bc of POTUS & have him piss on u. Angers me to my core. — Ryan Costello (@RyanCostello) November 7, 2018

Translated out of truncated Twitter-speak, he wrote:

To deal with harassment and filth spewed at GOP members of congress in tough seats every day for two years, because of the president; to bite your lip more times [than] you’d care to; to disagree and separate from the president on principle and civility in your campaign; to lose because of the president and have him piss on you. Angers me to my core.

Even in a political season of widespread anger — even for a lame-duck congressman who has not been shy about criticizing Trump and Trumpism — the message was extraordinary.

Costello decided to abandon his seat in March, after a court-ordered redistricting shifted it to a somewhat more liberal area. But even without that, he told Slate, Trump had been making it hard for him to stay in office from the first days of his administration.

“What gets the base to the polls is, ‘If you vote for my opponent, he’ll impeach Trump,’ ” he told The Washington Post a few weeks later.

Since then, he’s used Twitter to criticize the president for “damaging the fabric of our political culture” and rallying Democrats against him.

If he had any love left for the leader of his party, Wednesday’s presser seemed to be his breaking point.