             }
             catch(qe:QueryError)
             {
+                faultCode = ResourceManager.getInstance().getString("olap", "queryError");
+                fault = new Fault(faultCode, qe.message);
+                faultEvent = FaultEvent.createEvent(fault, token);
                 for each (responder in token.responders)
                 {
-                    responder.fault(qe.message);  
+                    responder.fault(faultEvent);  
                 }
                 result = null;
             }
             catch (e:Error)
             {
+                faultCode = ResourceManager.getInstance().getString("olap", "error");
+                fault = new Fault(faultCode, e.message);
+                faultEvent = FaultEvent.createEvent(fault, token);
                 for each (responder in token.responders)
                 {
-                    responder.fault(e.message);  
+                    responder.fault(faultEvent);  
                 }
                 result = null;
             }

import mx.collections.Sort;
import mx.core.mx_internal;
import mx.events.CubeEvent;
import mx.messaging.messages.ErrorMessage;
import mx.resources.ResourceManager;
import mx.rpc.AsyncToken;
import mx.rpc.IResponder;

use namespace mx_internal;


            var result:OLAPResult;
            var q:IOLAPQuery = _queriesPending[0];
            var deleteEntry:Boolean = true;
            var fault:Fault;
            var faultCode:String;
            var faultEvent:FaultEvent;
            
            try
            {
