code: function startConnection(url, configureConnection) {
          return function start(transport) {
              abp.log.debug(`Starting connection using ${signalR.TransportType[transport]} transport`);
              var connection = new signalR.HubConnection(url, {transport: transport});
              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.TransportType[transport]} transport. ${error.message}`);
                      if (transport !== signalR.TransportType.LongPolling) {
                          return start(transport + 1);
                      }
  
                      return Promise.reject(error);
                  });
          }(signalR.TransportType.WebSockets);
      }
docs: Starts a connection with transport fallback - if the connection cannot be started using the webSockets transport the function will fallback to the serverSentEvents transport and if this does not work it will try longPolling. If the connection cannot be started using any of the available transports the function will return a rejected Promise.