     return
 
   server_load_pool: ->
-    if !@result.pool_id?
-      return
+    return if !@result.pool_id?
+
     if !@result.disable_cache
       pool = @cached_pools.get(@result.pool_id)
       if pool
         @result.pool = pool
         @request_finished()
         return
-    new (Ajax.Request)('/pool/show.json',
-      parameters: id: @result.pool_id
-      method: 'get'
-      onCreate: ((resp) ->
-        @current_ajax_requests.push resp.request
-        return
-      ).bind(this)
-      onComplete: ((resp) ->
-        @current_ajax_requests = @current_ajax_requests.without(resp.request)
-        @request_finished()
-        return
-      ).bind(this)
-      onSuccess: ((resp) ->
-        if @current_ajax_requests.indexOf(resp.request) == -1
-          return
-        @result.pool = resp.responseJSON
-        @cached_pools.set @result.pool_id, @result.pool
-        return
-      ).bind(this))
+
+    xhr = jQuery.ajax '/pool/show.json',
+      data:
+        id: @result.pool_id
+      dataType: 'json'
+    .done (resp) =>
+      @result.pool = resp
+      @cached_pools.set @result.pool_id, @result.pool
+    .always =>
+      @xhr.delete xhr
+      @request_finished()
+
+    @xhr.add xhr
+
     return
 
   server_load_posts: ->
     tags = @result.tags
     # Put holds:false at the beginning, so the search can override it.  Put limit: at
     # the end, so it can't.
-    search = 'holds:false ' + tags + ' limit:' + @result.post_limit
+    search = "holds:false #{tags} limit:#{@result.post_limit}"
+
     if !@result.disable_cache
       results = @cached_posts.get(search)
       if results

    @load results_mode: 'center-on-current'
    return

  need_more_post_data: ->

    # We'll receive this message often once we're close to needing more posts.  Only
    # start loading more data the first time.

    @load()
    return

  perform_search: (event) =>
    tags = event.memo.tags
    @last_seen_tags = tags
    results_mode = event.memo.results_mode or 'center-on-first'
