diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/WritableBuffer.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/WritableBuffer.java
index 034a23e..1dcae28 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/WritableBuffer.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/WritableBuffer.java
@@ -145,9 +145,11 @@
             }
 
             if (_buf.remaining() < remaining) {
-                throw new IndexOutOfBoundsException(String.format(
+                IndexOutOfBoundsException cause = new IndexOutOfBoundsException(String.format(
                     "Requested min remaining bytes(%d) exceeds remaining(%d) in underlying ByteBuffer: %s",
                     remaining, _buf.remaining(), _buf));
+
+                throw (BufferOverflowException) new BufferOverflowException().initCause(cause);
             }
         }
 
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/codec/WritableBufferTest.java b/proton-j/src/test/java/org/apache/qpid/proton/codec/WritableBufferTest.java
index b3900bb..7509cf6 100644
--- a/proton-j/src/test/java/org/apache/qpid/proton/codec/WritableBufferTest.java
+++ b/proton-j/src/test/java/org/apache/qpid/proton/codec/WritableBufferTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.nio.BufferOverflowException;
 import java.nio.ByteBuffer;
 
 import org.junit.Test;
@@ -80,7 +81,7 @@
     }
 
     @Test
-    public void testEnsureReminingThrowsWhenExpected() {
+    public void testEnsureRemainingThrowsWhenExpected() {
         ByteBuffer data = ByteBuffer.allocate(100);
         WritableBuffer buffer = WritableBuffer.ByteBufferWrapper.wrap(data);
 
@@ -88,7 +89,7 @@
         try {
             buffer.ensureRemaining(1024);
             fail("Should have thrown an error on request for more than is available.");
-        } catch (IndexOutOfBoundsException iobe) {}
+        } catch (BufferOverflowException boe) {}
 
         try {
             buffer.ensureRemaining(-1);
@@ -97,7 +98,7 @@
     }
 
     @Test
-    public void testEnsureReminingDefaultImplementation() {
+    public void testEnsureRemainingDefaultImplementation() {
         WritableBuffer buffer = new DefaultWritableBuffer();
 
         try {
