91³Ô¹ÏÍø

Watch CBS News

Kastelic scores 2, Swayman posts shutout as Bruins top Devils 4-0 to clinch East's top wild card

By DOUG ALDEN Associated Press

Mark Kasetlic scored twice in the first period, Jeremy Swayman earned his second shutout of the season and the Boston Bruins clinched the top wild-card spot in the Eastern Conference with a 4-0 win over the New Jersey Devils on Tuesday night. 

Boston needed a win to lock up the top wild-card position. The Bruins will face the Atlantic Division champion Buffalo Sabres in the first round of the NHL playoffs. 

Ten Boston players recorded points in the game. Sean Kuraly had a pair of assists and David Pastrnak reached 100 points for the fourth straight season with an assist on one of the Bruins' four goals in the first. 

Morgan Geekie and Viktor Arvidsson also scored for Boston, which finished the regular season under first-year coach Marco Sturm at 45-27-10 and returned to the playoffs one year after tying for the worst record in the Eastern Conference at 33-39-10. 

After congratulating Swayman, the Bruins gathered at center ice and raised their sticks to salute their fans. 

New Jersey goalie Nico Daws allowed four goals on 12 shots in the opening period before getting some stronger defensive support the rest of the way. Daws finished with 23 saves. 

Swayman stopped 21 shots for his first shutout since a 3-0 win over Detroit on Jan. 13 and the 18th of his career. 

Boston got goals in the opening and closing minutes of the first and took firm command with a 4-0 lead after one period. 

Geekie scored 53 seconds in and Arvidsson scored his 25th of the season with just 6.4 seconds left in the period. In between, Kastelic scored twice and the Bruins cruised the rest of the way against the lottery-bound Devils, who finished 42-37-3. 

Pastrnak needed one more goal to reach 30 for the ninth time, which would have been a first in franchise history. 

Up next 

Devils: Done for the season.
Bruins: Visit Buffalo in the first round of the playoffs.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });