docs: function startConnection(url, configureConnection) {
          if (abp.signalr.remoteServiceBaseUrl) {
              url = abp.signalr.remoteServiceBaseUrl + url;
          }
  
          // Add query string: https://github.com/aspnet/SignalR/issues/680
          if (abp.signalr.qs) {
              url += (url.indexOf('?') == -1 ? '?' : '&') + abp.signalr.qs;
          }
  
          return function start(transport) {
              abp.log.debug('Starting connection using ' + signalR.HttpTransportType[transport] + ' transport');
              var connection = new signalR.HubConnectionBuilder()
                  .withUrl(url, transport)
                  .build();
              if (configureConnection && typeof configureConnection === 'function') {
                  configureConnection(connection);
              }
  
              return connection.start()
                  .then(function () {
                      return connection;
                  })
                  .catch(function (error) {
                      abp.log.debug('Cannot start the connection using ' + signalR.HttpTransportType[transport] + ' transport. ' + error.message);
                      if (transport !== signalR.HttpTransportType.LongPolling) {
                          return start(transport + 1);
                      }
  
                      return Promise.reject(error);
                  });
          }(signalR.HttpTransportType.WebSockets);
      }