Service workers in meteor on client?

I have the following code, but my result is a pending promise instead of a response?

if ('serviceWorker' in navigator && 'PushManager' in window) {
  console.log('Service Worker and Push is supported');
  const asyncServiceWorker = Meteor.wrapAsync(navigator.serviceWorker.register, navigator.serviceWorker, navigator);
  
  try {
  	let result = asyncServiceWorker('sw.js');
  	console.log('Service Worker is registered', result);
  }
  catch(error){
       console.error('Service Worker Error', error);
  }
}

If I just use the regular code, then .then never runs:

if ('serviceWorker' in navigator && 'PushManager' in window) {
  console.log('Service Worker and Push is supported');

  navigator.serviceWorker.register('sw.js')
  .then(function(swReg) {
    console.log('Service Worker is registered', swReg);

    swRegistration = swReg;
  })
  .catch(function(error) {
    console.error('Service Worker Error', error);
  });
} else {
  console.warn('Push messaging is not supported');
}