Thanks (in part) to @MindPatterns and this thread (and a personal need to have named queues ), I've introduced named-queuing (with priorities) to ext-basex.

To use, simply add a 'queue' config or name to any Ext Ajax request and the new QueueManager will manage the request chains (based on priorities defined on each queue) for you.

Request Queues are automatically created when specified in a request as necessary.

  • Requests without queue specifications are not managed by the Ext.lib.Ajax.QueueManager, and are executed normally.
  • Queued Requests are supported for both synchonous and asynchronous requests.
QueueManager properties (via Ext.lib.Ajax.queueManager):

quantas : adjustable at runtime, the deferred poll interval used to ensure the maximum allowed sessions are active any time there are pending queued requests. (default:10ms)

New lib.Ajax supporting properties :
.activeRequests : the Current number of lib.Ajax requests in progress. (read-only)
.pendingRequests : the Current number of pending Queued requests. (read-only)
.maxConcurrentRequests : adjustable at runtime to suit your needs (or browser), specifies the maximum concurrent Queued browser (XHR) requests.
(defaults:10 )

      params: {start:0, limit : 50},
      callback: update_user_fields,
      queue : {name:'userlists', priority : 9 } //create (and use) the named queue 'userlist' and assign  lowest (0-9) priority
     //or just specify a previously created queue by name
      queue : 'userlists'
Priority Queues.
The queueManager processes queued requests in order of their priority. There are 10 priorities (0 thru 9, 5 is the default), 0 being the highest priority. As soon as a queued request is added (as outlined above), the queueManager evaluates priorities in sequential order, firing AJAX queued requests until the maxConcurrentRequests value has been reached. Then, after quantas (milliseconds), the queues are again re-evaluated in priority order until all queues are exhausted.
  • Multiple queues may have the same priority.
  • Each queue has FIFO(default)/LIFO option as well, eg: queue : {name:'userlists', FIFO :false }
All-in-all, quite flexible and tunable.

Let me know how things go (especially for those chat clients )