I'm not sure if the interaction between `_saveInProgress`, `_nextSaveDeferred`, and `scope._dirty` flag will work if the same scope is updated while it's being saved. It seems to work like this:

1. If a scope is updated, then it's marked `_dirty`

2. While that scope is being saved, it's updated again, so `_nextSavedDeferred` is created.

3. When the first save completes, the `_dirty` flag is set to false, and it initiates `_nextSavedDeferred.save()`

4. But `save()` does nothing because `_dirty` flag has already been set to false

`_dirty` could be changed to be a counter, so it's incremented instead of being set to true. When `save()` is initiated, `_dirty` is set to 1 (to consolidate being incremented *between* calls to `save()`). When `save()` completes, `_dirty` is decremented (so it does *not* consolidate being incremented *during* `save()`).