code: public void getResult (ResultListener<T> rl)
      {
          if (_error != null) {
              rl.requestFailed(_error);
          } else if (_list == null) { // _list == null when we have a result
              rl.requestCompleted(_result);
          } else {
              _list.add(rl);
          }
      }
docs: Retrieves the result for the specified listener.  If the result is already available (or the
  request failed), the listener will receive an immediate response.  Otherwise, the listener
  will be added to the list and notified when the result is available.