Backbone assumes that Backbone.ajax will be asynchronous.

Backbone assumes that Backbone.ajax will be an asynchronous method. In the case of a user supplied Backbone.ajax method that caches requests in memory (and returns cached results) or performs some other logic that returns immediately, the 'sync' event will be fired before the 'request' event. It seems logical that the 'request' event should be fired before the request is actually performed. As documented, the current implementation makes sense unless the scenario as described occurs. This might suggest that the 'request' event is indeed correct in its current form and that another event 'beforeRequest' might be more appropriate.