Similar to (1), I somewhat have a process for async discussions.
Sometimes, when I know starting a Slack thread will lead to lots of discussion, I wait until I have mental space to be ready to switch to them. Once those conversations start, it's very hard to concentrate on the current task.
Other times, I know people will take a long time to respond, so I'll kick off those discussions early and be comfortable in being able to context switch away from it when needed.
Sometimes, when I know starting a Slack thread will lead to lots of discussion, I wait until I have mental space to be ready to switch to them. Once those conversations start, it's very hard to concentrate on the current task.
Other times, I know people will take a long time to respond, so I'll kick off those discussions early and be comfortable in being able to context switch away from it when needed.