         
         if (_credentials != null)
             channelSet.setCredentials(_credentials, this, _credentialsCharset);
-    }        
+    }    
+    
+     /**
+    * Monitor a rpc message that is being send
+   */
+   private function monitorRpcMessage(message:IMessage,actualMessage:IMessage):void
+   {
+       if (NetworkMonitor.isMonitoring())
+       {
+	        if (message is ErrorMessage)
+	        {
+                NetworkMonitor.monitorFault(actualMessage, MessageFaultEvent.createEvent(ErrorMessage(message)));
+	        }
+	        else if (message is AcknowledgeMessage)
+	        {
+	       	    	NetworkMonitor.monitorResult(message, MessageEvent.createEvent(MessageEvent.RESULT, actualMessage));  
+        	}
+	       
+            else 
+            {
+	        		NetworkMonitor.monitorInvocation(getNetmonId(), message);
+	        }
+      }
+   }    
+   	
+	/**
+     * Return the id for the NetworkMonitor.
+    * @private
+    */
+   mx_internal function getNetmonId():String
+   {
+       return null;
+   }
+       
 }
 
 }

                flushClientIdWaitQueue();
        }
                
        dispatchEvent(MessageFaultEvent.createEvent(errMsg));    
        monitorRpcMessage(errMsg,msg);
              
        // If we get an authentication fault on the server and our authenticated
        // flag is true then the authentication fault must have been caused by a
        // session expiration on the server.  Set our authentication state to false.

            }
            
            channelSet.send(this, message);
            monitorRpcMessage(message,message);  
        }
        else if (destination.length > 0)
        {
            initChannelSet(message);
            if (channelSet != null)
            {
                channelSet.send(this, message);
                monitorRpcMessage(message,message);     
            }
        }        
        else
