diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
index 903511d..76fd9f4 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
@@ -44,6 +44,25 @@
 public class MessageTransport {
 
   /**
+   * A callback that is invoked when errors occur at the transport level.
+   */
+  public interface ErrorCallback {
+
+    /**
+     * Called when an exception occurs when attempting to send a response
+     * message. 
+     */
+    void onResponseException(Exception e);
+
+    /**
+     * Called when the transport terminates due to an exception.
+     * 
+     * @param e The exception that led to the termination
+     */
+    void onTermination(Exception e);
+  }
+
+  /**
    * An exception that is generated by the transport when it receives a failure
    * message from the server in response to executing a client request.
    */
@@ -70,19 +89,6 @@
     }
   }
 
-  /**
-   * A callback that is invoked when the transport terminates.
-   */
-  public interface TerminationCallback {
-
-    /**
-     * Called when the transport terminates.
-     * 
-     * @param e The exception that led to the termination
-     */
-    void onTermination(Exception e);
-  }
-
   class PendingRequest extends PendingSend {
     private final Callback<Response> callback;
     private final Message message;
@@ -169,7 +175,9 @@
 
     @Override
     public void failed(Exception e) {
-      // Do nothing
+      if (errorCallback != null) {
+        errorCallback.onResponseException(e);
+      }
     }
 
     @Override
@@ -200,7 +208,7 @@
   private final RequestProcessor requestProcessor;
   private final LinkedBlockingQueue<PendingSend> sendQueue = new LinkedBlockingQueue<PendingSend>();
 
-  private final TerminationCallback terminationCallback;
+  private final ErrorCallback errorCallback;
 
   /**
    * Create a new instance using the given streams and request processor.
@@ -214,9 +222,9 @@
    */
   public MessageTransport(final InputStream inputStream,
       final OutputStream outputStream, RequestProcessor requestProcessor,
-      TerminationCallback terminationCallback) {
+      ErrorCallback errorCallback) {
     this.requestProcessor = requestProcessor;
-    this.terminationCallback = terminationCallback;
+    this.errorCallback = errorCallback;
     this.inputStream = inputStream;
     this.outputStream = outputStream;
   }
@@ -403,8 +411,7 @@
       }
 
       default: {
-        processUnknownMessageType(message.getMessageId(),
-            messageType.name());
+        processUnknownMessageType(message.getMessageId(), messageType.name());
         break;
       }
     }
@@ -444,8 +451,8 @@
 
   private void terminateDueToException(Exception e) {
     pendingRequestMap.blockAdds(e);
-    if (terminationCallback != null) {
-      terminationCallback.onTermination(e);
+    if (errorCallback != null) {
+      errorCallback.onTermination(e);
     }
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
index d69d69c..abd17e8 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteUI.java
@@ -39,7 +39,7 @@
  * development mode server.
  */
 public class RemoteUI extends DevModeUI implements
-    MessageTransport.TerminationCallback {
+    MessageTransport.ErrorCallback {
 
   private final String clientId;
   private final DevModeServiceRequestProcessor devModeRequestProcessor;
@@ -129,15 +129,20 @@
     // resolved, we send the startup URLs as part of the moduleLoadComplete so
     // they are not displayed before the server is ready to serve the modules at
     // the URLs.
-    viewerServiceClient = new ViewerServiceClient(transport);
+    viewerServiceClient = new ViewerServiceClient(transport, getTopLogger());
     viewerServiceClient.initialize(clientId, cachedStartupUrls);
     viewerServiceClient.checkCapabilities();
   }
 
+  public void onResponseException(Exception e) {
+    getTopLogger().log(TreeLogger.INFO,
+        "An exception occured while attempting to send a response message.", e);   
+  }
+
   public void onTermination(Exception e) {
-    getTopLogger().log(TreeLogger.INFO,
+    getConsoleLogger().log(TreeLogger.INFO,
         "Remote UI connection terminated due to exception: " + e);
-    getTopLogger().log(TreeLogger.INFO,
+    getConsoleLogger().log(TreeLogger.INFO,
         "Shutting down development mode server.");
 
     try {
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceClient.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceClient.java
index 820adfc..ee26897 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceClient.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceClient.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.dev.shell.remoteui;
 
+import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.TreeLogger.HelpInfo;
 import com.google.gwt.core.ext.TreeLogger.Type;
 import com.google.gwt.dev.protobuf.ByteString;
@@ -42,16 +43,8 @@
  */
 public class ViewerServiceClient {
 
-  private static final Callback<Response> DUMMY_CALLBACK = new Callback<Response>() {
-    public void onDone(Response result) {
-    }
-
-    public void onError(Throwable t) {
-      // TODO(rdayal): handle errors?
-    }
-  };
-
   private final MessageTransport transport;
+  private final TreeLogger unexpectedErrorLogger;
 
   /**
    * Create a new instance.
@@ -59,8 +52,10 @@
    * @param processor A MessageProcessor that is used to communicate with the
    *          ViewerService server.
    */
-  public ViewerServiceClient(MessageTransport processor) {
+  public ViewerServiceClient(MessageTransport processor,
+      TreeLogger unexpectedErrorLogger) {
     this.transport = processor;
+    this.unexpectedErrorLogger = unexpectedErrorLogger;
   }
 
   /**
@@ -135,7 +130,15 @@
     Request requestMessage = buildRequestMessageFromViewerRequest(
         viewerRequestBuilder).build();
 
-    transport.executeRequestAsync(requestMessage, DUMMY_CALLBACK);
+    transport.executeRequestAsync(requestMessage, new Callback<Response>() {
+      public void onDone(Response result) {
+      }
+
+      public void onError(Throwable t) {
+        unexpectedErrorLogger.log(TreeLogger.WARN,
+            "An error occurred while attempting to add a log entry.", t);
+      }
+    });
   }
 
   /**
@@ -326,7 +329,8 @@
    * 
    * @throws RequestException if the request failed
    */
-  private Response waitForResponse(Future<Response> future) throws RequestException {
+  private Response waitForResponse(Future<Response> future)
+      throws RequestException {
     try {
       return future.get();
     } catch (ExecutionException e) {
@@ -344,7 +348,8 @@
   /**
    * Waits for response and throws an unchecked exception if the request failed.
    */
-  private Response waitForResponseOrThrowUncheckedException(Future<Response> future) {
+  private Response waitForResponseOrThrowUncheckedException(
+      Future<Response> future) {
     try {
       return waitForResponse(future);
     } catch (RequestException e) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceTreeLogger.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceTreeLogger.java
index 898bc37..6e8e3bb 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/ViewerServiceTreeLogger.java
@@ -146,7 +146,8 @@
           }
 
           public void onError(Throwable t) {
-            // TODO(rdayal): handle errors?
+            System.err.println("An error occurred while attempting to add a log branch.");
+            t.printStackTrace(System.err);
           }
         });
   }
diff --git a/dev/core/test/com/google/gwt/dev/shell/remoteui/MessageTransportTest.java b/dev/core/test/com/google/gwt/dev/shell/remoteui/MessageTransportTest.java
index 8a32250..3d93795 100644
--- a/dev/core/test/com/google/gwt/dev/shell/remoteui/MessageTransportTest.java
+++ b/dev/core/test/com/google/gwt/dev/shell/remoteui/MessageTransportTest.java
@@ -100,7 +100,9 @@
     MessageTransport messageTransport = new MessageTransport(
         network.getClientSocket().getInputStream(),
         network.getClientSocket().getOutputStream(), requestProcessor,
-        new MessageTransport.TerminationCallback() {
+        new MessageTransport.ErrorCallback() {
+          public void onResponseException(Exception e) {
+          }
           public void onTermination(Exception e) {
           }
         });
@@ -246,7 +248,9 @@
     MessageTransport messageTransport = new MessageTransport(
         network.getClientSocket().getInputStream(),
         network.getClientSocket().getOutputStream(), requestProcessor,
-        new MessageTransport.TerminationCallback() {
+        new MessageTransport.ErrorCallback() {
+          public void onResponseException(Exception e) {
+          }
           public void onTermination(Exception e) {
           }
         });
@@ -340,7 +344,9 @@
     MessageTransport messageTransport = new MessageTransport(
         network.getClientSocket().getInputStream(),
         network.getClientSocket().getOutputStream(), requestProcessor,
-        new MessageTransport.TerminationCallback() {
+        new MessageTransport.ErrorCallback() {
+          public void onResponseException(Exception e) {
+          }
           public void onTermination(Exception e) {
           }
         });
@@ -395,7 +401,9 @@
     MessageTransport messageTransport = new MessageTransport(
         network.getClientSocket().getInputStream(),
         network.getClientSocket().getOutputStream(), requestProcessor,
-        new MessageTransport.TerminationCallback() {
+        new MessageTransport.ErrorCallback() {
+          public void onResponseException(Exception e) {
+          }
           public void onTermination(Exception e) {
           }
         });
