Support an option "is_idle" which skips the listen() step