Adley Rutschman has done it again.

The Orioles’ franchise catcher hit his fourth home run in three games to walk off the Toronto Blue Jays in the bottom of the ninth inning Wednesday afternoon, salvaging a 3-2 win to extend Baltimore’s sweepless streak past the two-year mark.

“It feels great to win,” Rutschman said after his second career walk-off blast. “Our guys are really resilient. They have been all year. I think it’s always the next guy up. We never think we’re out of it. I was really proud of everyone today. I think it’s just a testament to our team staying in it.”

After rain postponed Tuesday’s game to July, the Orioles narrowly avoided defeat to extend their American League-record streak of consecutive regular-season series of at least two games without being swept to 105. Baltimore tied the 1903-05 New York Giants for the third-longest streak in MLB history behind the 1942-44 St. Louis Cardinals (124) and 1906-09 Chicago Cubs (115). Excluding last year’s American League Division Series, the Orioles have not been swept since May 13-15, 2022.

That stretch has almost directly coincided with the career of Rutschman, who made his MLB debut less than a week later. The catcher was instrumental in keeping that streaking alive, bailing out an offense that had not plated a run since Jordan Westburg went deep in the first at-bat of the game.

The Orioles (27-14) trotted out a different look to their lineup with Westburg hitting leadoff for the first time in his career and Gunnar Henderson batting in the cleanup spot. Westburg finished 2-for-5 with two runs scored.

“He definitely got us going there in the first inning of a left-handed starter that’s been absolutely lights out so far,” manager Brandon Hyde said of Westburg. “So, started off great. Next few ABs were a little bit rough but Westy’s having a heck of a season and right now we’re going to be in against a string of righties so [Henderson] will be back up there.”The Orioles threatened to tie the game and take the lead earlier with several rallies. They had a prime opportunity in the seventh inning when Austin Hays pinch hit for the struggling Cedric Mullins and doubled to put runners on second and third with no outs and the top of the lineup due up. Toronto reliever Yimi García got out of the jam, however, and escaped another in the eighth when, after the Orioles put runners on first and third with one out, first baseman Vladimir Guerrero Jr. threw out Anthony Santander at home trying to score on a bunt by James McCann.

Baltimore’s lack of offense nearly stuck starter Kyle Bradish with his first loss of the season after he worked up a high pitch count early and only went four innings. In their first time through the order, the Blue Jays went 1-for-8 with an infield single and a walk against the right-hander, but they got to him in the third on a two-run double by Bo Bichette. Santander nearly came up with the running catch, but the ball bounced off his glove as he crashed into the wall. Santander bruised his knee on the play and aggravated it further on a slide into second base in the eighth. Hyde replaced him in the field with Ryan O’Hearn for the top of the ninth.

Hyde also said after the game that Hays didn’t get the start against the left-handed Kikuchi because the outfielder is still dealing with the calf injury that sent him to the 10-day injured list from April 22 to May 13. Hyde pinch ran Kyle Stowers for Hays after the 2023 All-Star doubled in the seventh.

“He’s still got a little bit lingering effects in the calf,” Hyde said. “So, when he was activated, that morning actually, there was some soreness. That’s why he didn’t start today. We wanted to give him an extra day and then today it was a little bit sore but better and with an off day tomorrow, hopefully he’s ready to go after the off day.”

Bradish, who was originally scheduled to start Tuesday before the game was postponed, threw over 20 pitches in each of the second, third and fourth innings. The Blue Jays worked several long at-bats against him and fouled off 18 pitches, tied for the second-most foul balls Bradish has allowed through four innings of a start in his career according to Statcast. Hyde then pulled him at 85 pitches despite Bradish telling his manager he felt good enough to go back out for the fifth.

“That’s not my call,” Bradish said. “I told skip I felt good but he — this is only my third start back so I think he thought that 85 pitches in four innings was good enough for a day’s work. But, like I said, just keep working on getting deeper into games. Eighty-five pitches is more than enough for me to get through six and on.”

The bullpen picked up its starter by pitching five scoreless innings to close out the game. Jacob Webb walked three batters to load the bases in the fifth but wiggled his way out of it to extend his nine-game streak of not allowing an earned run. Cionel Pérez pitched a 1-2-3 sixth and recorded the first out of the seventh before giving way to Mike Baumann, who retired all five batters he faced. Danny Coulombe then worked around a one-out double by Kevin Kiermaier for a clean top of the ninth.

It all set the stage for Rutschman, who followed a leadoff single by Westburg with a 347-foot shot off Blue Jays closer Jordan Romano for the second walk-off home run of his career. After the ball hit the top of the right field wall just above the green padding and caromed back toward the field, the home run was reviewed and upheld.

“I think it says a lot about our team,” Rutschman said. “It’s always just guys picking each other up and continuing to progress and have each other’s backs. It’s a fun group to be a part of. Guys bring it every single day.”