Repository: opsdroid/opsdroid

Issue:
Exiting opsdroid with ctrl+c fails with exception
<!-- Before you post an issue or if you are unsure about something join our matrix channel https://riot.im/app/#/room/#opsdroid-general:matrix.org and ask away! We are more than happy to help you. -->
# Description
I am trying to build a Slack bot using Opsdroid (master branch). When pressing `ctrl+c` to exit opsdroid, the process does not stop and throws an error.


## Steps to Reproduce
1. Start opsdroid and wait for it to run

```
opsdroid start
```

2. Press `ctrl+c` to exit the process


## Expected Functionality
The opsdroid process should exit on pressing `ctrl+c`.


## Experienced Functionality
The opsdroid process fails to exit with an exception. The debug log is as follows:

```
INFO opsdroid.logging: ========================================
INFO opsdroid.logging: Started opsdroid v0.16.0+82.g4c55e97
INFO opsdroid: ========================================
INFO opsdroid: You can customise your opsdroid by modifying your configuration.yaml
INFO opsdroid: Read more at: http://opsdroid.readthedocs.io/#configuration
INFO opsdroid: Watch the Get Started Videos at: http://bit.ly/2fnC0Fh
INFO opsdroid: Install Opsdroid Desktop at: 
https://github.com/opsdroid/opsdroid-desktop/releases
INFO opsdroid: ========================================
WARNING opsdroid.loader: No databases in configuration.This will cause skills which store things in memory to lose data when opsdroid is restarted.
INFO opsdroid.connector.slack: Connecting to Slack
INFO opsdroid.connector.slack: Connected successfully
INFO opsdroid.web: Started web server on http://0.0.0.0:8080
INFO opsdroid.core: Opsdroid is now running, press ctrl+c to exit.
^CINFO opsdroid.core: Received stop signal, exiting.
INFO opsdroid.core: Removing skills...
INFO opsdroid.core: Removed hello
INFO opsdroid.core: Removed seen
INFO opsdroid.core: Removed help
INFO opsdroid.core: Stopping connector slack...
ERROR: Unhandled exception in opsdroid, exiting...
Caught exception
{'message': 'Task exception was never retrieved', 'exception': TypeError("object NoneType can't be used in 'await' expression",), 'future': <Task finished coro=<OpsDroid.handle_signal() done, defined at /home/daniccan/c8/OpsDroid/c8-alertbot/env/lib/python3.6/site-packages/opsdroid/core.py:147> exception=TypeError("object NoneType can't be used in 'await' expression",)>}
WARNING slack.rtm.client: Websocket was closed.
```

## Versions
- **Opsdroid version:** master branch in git
- **Python version:** 3.6.8
- **OS/Docker version:** Ubuntu 18.04 LTS

## Configuration File
Please include your version of the configuration file below.

```yaml
# Your code goes here.
welcome-message: true

connectors:
  - name: slack
    api-token: "<Bot OAuth Token>"

skills:
  - name: hello
  - name: seen
  - name: help
```

## Additional Details
Any other details you wish to include such as screenshots, console messages, etc.


<!-- Love opsdroid? Please consider supporting our collective:
 +👉  https://opencollective.com/opsdroid/donate -->



Discussion:
Ok just reproduced locally. This seems to happen when `slack` is the first connector in the list.

#### Fails to exit 

```yaml
connectors:
  - name: slack
    api-token: "<Bot OAuth Token>"

skills:
  - name: hello
```
and 
```yaml
connectors:
  - name: slack
    api-token: "<Bot OAuth Token>"
  - name: websocket

skills:
  - name: hello
```

#### Successfully exits

```yaml
connectors:
  - name: websocket
  - name: slack
    api-token: "<Bot OAuth Token>"

skills:
  - name: hello
```
But with the following errors in the log.
```
...
ERROR: Unhandled exception in opsdroid, exiting...
ERROR: Unhandled exception in opsdroid, exiting...
ERROR: Unhandled exception in opsdroid, exiting...
```

Resolving patch:
diff --git a/opsdroid/connector/slack/__init__.py b/opsdroid/connector/slack/__init__.py
--- a/opsdroid/connector/slack/__init__.py
+++ b/opsdroid/connector/slack/__init__.py
@@ -87,7 +87,7 @@ async def connect(self):
 
     async def disconnect(self):
         """Disconnect from Slack."""
-        await self.slack_rtm.stop()
+        self.slack_rtm.stop()
         self.listening = False
 
     async def listen(self):


Test patch: