public async Task StartAsync(CancellationToken ct = default(CancellationToken))
        {
            try
            {
                var startTime = Stopwatch.GetTimestamp();
                _logger.Debug("Preparing to start service");
                var service = await _bootstrap.GetServiceAsync(ct);

                _logger.Debug("Service of type {serviceType} successfully resolved", service.GetType().Name);
                await service.StartAsync(ct);

                var elapsed = new TimeSpan(Stopwatch.GetTimestamp() - startTime);
                _logger.Info("Service {serviceName} started after {elapsedTime}", service.GetType().Name, elapsed);
            }
            catch (Exception e)
            {
                _logger.Error(e, "An unhandled exception was thrown when starting the service");
            }
        }