The logic here does not quite make sense to me. The .abort function is invoked when an account has been removed (meaning the data we are syncing now is junk) but in this case we are aborting when a single transaction fails (error case) or in a semi-circular manner (if .abort is called and we abort the transaction our abort logic here fires too).

The only case where we really want to completely stop is when the account is removed. 

I see another case where the sync partially fails for some unknown reason where we might want to send an error (like emit('error') or something) and we would want to mark the calendar's sync incomplete. This seems the ideal place to put handling for that incomplete logic but not the right spot for the "the account was removed" logic.