Treating a dialog like an awaitable prompt is the kind of API that feels obvious in hindsight.