If possible, it would be nice to minimize the exposed API.  It seems we could drop `exitSelectMode()` by automatically exiting when the selection promise reaches the end of the selected IDs or is canceled.  The tests do use `exitSelectMode()`, but it seems those few cases would not be necessary if the exit was implicit.

We could then rename `enterSelectMode()` to something like `selectFromList()`, etc.  This hides the entire concept of a "mode" from other code and makes it easier to change the list in the future.

If we're going to do this, I think it would be nice to do it now before landing and starting the dependent export work.  Thoughts?