If we always provide a promise, it seems like we maybe we no longer need a separate `action` callback?  We can just use a single callback indicating the UI is now selecting and also provide the promise to retrieve results asynchronously?  Or maybe we could even return the promise from `enterSelectMode()`?