### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

when kinesis-mock fails to start (for whatever reason, e.g. a segfault when running the docker image on qemu virtualization), we only get unhelpful error messages from the proxy trying to connect to the backend:

```
2021-07-22T13:30:22:INFO:bootstrap.py: Thread run method <function AdaptiveThreadPool.submit.<locals>._run at 0x7f1e00f299d0>(None) failed: MyHTTPConnectionPool(host='localhost', port=39045): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f1e00f544f0>: Failed to establish a new connection: [Errno 111] Connection refused')) Traceback (most recent call last):
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.8/http/client.py", line 1252, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1298, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1247, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.8/http/client.py", line 1007, in _send_output
    self.send(msg)
  File "/usr/lib/python3.8/http/client.py", line 947, in send
    self.connect()
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connection.py", line 200, in connect
    conn = self._new_conn()
  File "/home/thomas/workspace/localstack/localstack/.venv/lib/python3.8/site-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f1e00f544f0>: Failed to establish a new connection: [Errno 111] Connection refused
```

### Expected Behavior

localstack should gracefully terminate the service proxy, and inform with a log message why kinesis failed to start.

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

reproduce by modifying `install_kinesis_mock` to load a bin_file that is not meant to be used for your system.

### Environment

_No response_

### Anything else?

_No response_
try:
                    save_file(target_file, file_content)
                    save_file(key_file_name, key_file_content)
                    save_file(cert_file_name, cert_file_content)
                    break
                except Exception as e:
                    if i > 0:
                        raise
                    LOG.info(
                        "Unable to store certificate file under %s, using tmp file instead: %s"
                        % (target_file, e)
                    )
                    
                    target_file = "%s.pem" % new_tmp_file()
                    key_file_name = "%s.key" % target_file
                    cert_file_name = "%s.crt" % target_file
            TMP_FILES.append(target_file)
            TMP_FILES.append(key_file_name)
            TMP_FILES.append(cert_file_name)
        if not return_content:
            return target_file, cert_file_name, key_file_name
    return file_content
def run_safe(_python_lambda, *args, **kwargs):
    print_error = kwargs.get("print_error", False)
    try:
        return _python_lambda(*args, **kwargs)
    except Exception as e:
        if print_error:
            LOG.warning("Unable to execute function: %s" % e)
def run_cmd_safe(**kwargs):