Only call `listen` from `run` when needed

This was causing problems with arguments not being passed to
listen if they weren't passed to run. Thus, you couldn't
properly call `listen` and then call `run` (with no args)
later.