@Override
 public <T> void executeAsync(
     final Protocol<T> protocol,
     final InternalConnection connection,
     final SingleResultCallback<T> callback) {
   protocol.executeAsync(
       connection,
       errorHandlingCallback(
           new SingleResultCallback<T>() {
             @Override
             public void onResult(final T result, final Throwable t) {
               if (t != null) {
                 handleThrowable(t);
               }
               callback.onResult(result, t);
             }
           }));
 }