I would suggest the following:
-
Move keep, option, input to a separate module, say Transient.ConsoleIO. We can possibly call the new module Transient.Input if there are more input methods to be covered. We can rename keep to something more appropriate like withConsole or withAsyncInput or interactive.
-
keep' and exit can stay in Base. But we can rename keep' to something more appropriate likewait or stayput.