Sync does not "Delete destination records that do not exist in the source."

Issue #3132732 on drupal.org by bennlich.

I want the source of truth for my drupal taxonomy terms to live in a csv file that I migrate over periodically. I did a drush migrate-import --help to see what my options were, and this sounded like exactly what I wanted:

--sync                                Sync source and destination. Delete destination records that do not exist in the source.

So I ran:

drush migrate-import --sync case_type

My expectation was that all existing taxonomy terms in my database that did not match the records in my source would be deleted. But this is not what happens. New records are added, but all the pre-existing records are left untouched. I was expecting all the existing records to be deleted if their ids didn't match the ids listed in my source.

Is this the expected behavior?

Here are the source, process, and destination blocks in my migration.yml for reference:

id: case_type
source:
  plugin: csv
  path: case_types.csv
  ids:
    - case_type
  fields:
    -
      name: case_type
      label: 'Case Type'
process:
  name: case_type
destination:
  plugin: 'entity:taxonomy_term'
  default_bundle: case_type