@Override
  public int writeMessage() throws IOException {
    int result = 0;
    RuntimeException runtimeException = null;
    IOException ioException = null;
    for (final MsgStreamer streamer : streamers) {
      if (runtimeException != null) {
        streamer.release();
      } else {
        try {
          result += streamer.writeMessage();
          // if there is an exception we need to finish the
          // loop and release the other streamer's buffers
        } catch (RuntimeException e) {
          runtimeException = e;
        } catch (IOException e) {
          ioException = e;
        }
      }
    }
    if (runtimeException != null) {
      throw runtimeException;
    }
    if (ioException != null) {
      throw ioException;
    }
    return result;
  }
List of {@link MsgStreamer}s encapsulated by this MsgStreamerList.
geode-core/src/main/java/org/apache/geode/internal/tcp/MsgStreamerList.java