                 var faults:Array = soapResult.result as Array;
                 for each (var soapFault:Fault in faults)
                 {
+                    soapFault.content = body;
                     dispatchRpcEvent(FaultEvent.createEvent(soapFault, token, message));
                 }
-                dispatchResultEvent = false;
+                eventDispatchRequired = false;
             }
 
-            if (dispatchResultEvent)
+            if (eventDispatchRequired)
                 _result = soapResult.result;
         }
-        catch(fault:Fault)
-        {
+        catch (fault:Fault)
+        {
+            fault.content = body;
             dispatchRpcEvent(FaultEvent.createEvent(fault, token, message));
-            return false;
-        }
-        catch(error:Error)
+            eventDispatchRequired = false;
+        }
+        catch (error:Error)
         {
             var errorMsg:String = error.message != null ? error.message : "";
             var fault2:Fault = new Fault("DecodingError", errorMsg);
+            fault2.content = body;
             var faultEvent:FaultEvent = FaultEvent.createEvent(fault2, token, message);
             dispatchRpcEvent(faultEvent);
-            return false;
-        }
-
-        return dispatchResultEvent;
+            eventDispatchRequired = false;
+        }
+
+        return eventDispatchRequired;
     }
 
     /**

import mx.logging.ILogger;
import mx.messaging.ChannelSet;
import mx.messaging.events.MessageEvent;
import mx.messaging.messages.IMessage;
import mx.messaging.messages.SOAPMessage;
import mx.netmon.NetworkMonitor;

     */
    override mx_internal function processResult(message:IMessage, token:AsyncToken):Boolean
    {
        return processSOAP(message, token);
    }

    /**
     * @private
     */ 
    mx_internal function processSOAP(message:IMessage, token:AsyncToken):Boolean
    {
        var body:Object = message.body;
        var eventDispatchRequired:Boolean = true;

        try
        {
