Unlike most other change operations, this and `moveToTrash()` still fire a synthetic change event even if there was an error.  Intentional difference?