The "Select a Gitlab Project" dialog gets stuck in a perpetual loop

### Summary

I have a workspace with three GitLab projects in it. Sometimes when using the "Create a new merge request..." action, it stalls for a few seconds and then the "Select a Gitlab Project" dialog opens, but no amount of interacting with the dialog will get it to go away and complete the action.

* MacOS 10.15.6
* VSCode 1.49.2
* GL extension: 3.3.0
* GL host/plan: Ultimate

### Steps to reproduce

1. Open a [Multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces)
1. Open a non-project editor tab (easiest might be to open any extension page from the extension side panel, @joel.schou recommends diff view)
1. Use the keyboard command to open the Command Palette
1. Find "GitLab: Create new merge request on current project" and hit Enter
1. Wait for the "Select a Gitlab Project" dialog
1. Choose a project

<details>
<summary>Original steps</summary>

1. Add at least two projects to a single workspace
1. Make changes in one and commit the files locally, then push your branch up
1. Have a file open in the DIFF view 👈 **Edit: this might be the key**
1. Use the keyboard command to open the Command Palette
1. Find "Create a new merge request..." and hit Enter
1. Wait for the "Select a Gitlab Project" dialog
1. Choose a project

</details>

This doesn't happen every time I use "Create a new merge request...". Sometimes the extension makes a wise guess at the project I want it to choose and opens the new MR screen in GitLab. Other times the dialog comes up immediately and I can successfully choose the project. In the past couple days, though, I've been stuck in this loop.

### What is the current *bug* behavior?

The extension stops working. After some time the "Select a Gitlab Project" dialog will show and it will not go away for good. Trying to escape from it or select a project on it simply closes it and then brings it back.

### What is the expected *correct* behavior?

I should be able to use the dialog as normal.

### Relevant logs and/or screenshots

I cannot get at the logs because any time the dialog loses focus, it closes and immediately opens again, stealing focus.

![Kapture_2020-10-05_at_11.47.33](/uploads/74a4a88808631a4166ac4f4d9f1a1f00/Kapture_2020-10-05_at_11.47.33.gif)

<details>
<summary>Logs</summary>

```
Command failed with exit code 128: git ls-remote --get-url
fatal: No remote configured to list refs from.
Error: Command failed with exit code 128: git ls-remote --get-url
fatal: No remote configured to list refs from.
	at makeError (/Users/tomas/workspace/code/gitlab-vscode-extension/node_modules/execa/lib/error.js:59:11)
	at handlePromise (/Users/tomas/workspace/code/gitlab-vscode-extension/node_modules/execa/index.js:114:26)
	at runMicrotasks (<anonymous>)
	at processTicksAndRejections (internal/process/task_queues.js:94:5)
	at async GitService._fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:31:26)
	at async GitService._fetchRemoteUrl (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:51:21)
	at async GitService.fetchGitRemote (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:65:12)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:160:20)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 2)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async Object.getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async openCreateNewMr (/Users/tomas/workspace/code/gitlab-vscode-extension/src/openers.js:112:27)
	at async /Users/tomas/workspace/code/gitlab-vscode-extension/src/extension.js:29:5
Command failed with exit code 128: git ls-remote --get-url
fatal: No remote configured to list refs from.
Error: Command failed with exit code 128: git ls-remote --get-url
fatal: No remote configured to list refs from.
	at makeError (/Users/tomas/workspace/code/gitlab-vscode-extension/node_modules/execa/lib/error.js:59:11)
	at handlePromise (/Users/tomas/workspace/code/gitlab-vscode-extension/node_modules/execa/index.js:114:26)
	at runMicrotasks (<anonymous>)
	at processTicksAndRejections (internal/process/task_queues.js:94:5)
	at async GitService._fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:31:26)
	at async GitService._fetchRemoteUrl (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:51:21)
	at async GitService.fetchGitRemote (/Users/tomas/workspace/code/gitlab-vscode-extension/src/git_service.js:65:12)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:160:20)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async fetch (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:63:5)
	at async fetchProjectData (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:148:28)
	at async fetchCurrentProject (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:162:12)
	at async Promise.all (index 1)
	at async Object.getAllGitlabProjects (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:228:20)
	at async Object.showPicker [as show] (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_project_input.js:5:34)
	at async Object.getCurrentWorkspaceFolderOrSelectOne (/Users/tomas/workspace/code/gitlab-vscode-extension/src/gitlab_service.js:52:23)
	at async openCreateNewMr (/Users/tomas/workspace/code/gitlab-vscode-extension/src/openers.js:112:27)
	at async /Users/tomas/workspace/code/gitlab-vscode-extension/src/extension.js:29:5
```

</details>

### Possible fixes

 ¯\＿(ツ)＿/¯

- Break the circular dependency between `gitlabProjectInput.show()` and `gitlab_service`.

### Workaround

- Always have a project file open in the editor when running GitLab Workflow commands.
- The best option for using multi-root workspaces might be downgrading to [`3.2.1`](https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob/main/CHANGELOG.md#321-2020-08-31) (previous version) until a fix is released.

![Screenshot_2020-10-05_at_12.10.07_PM](/uploads/e1ab63715c1ab173440b174fd320102c/Screenshot_2020-10-05_at_12.10.07_PM.png)

Story points: 2.0