             caretIndex -= length;
             
             placeHolder = iterator.bookmark;
-            iterator.seek(CursorBookmark.FIRST, caretIndex);
-            caretBookmark = iterator.bookmark;
+			try
+			{
+				iterator.seek(CursorBookmark.FIRST, caretIndex);
+				caretBookmark = iterator.bookmark;
+			}
+			catch (e:ItemPendingError)
+			{
+				e.addResponder(new ItemResponder(setBookmarkPendingResultHandler, setBookmarkPendingFailureHandler,
+								{ property: "caretBookmark", value: caretIndex } ));
+			}
             iterator.seek(placeHolder);
         }
         
         return requiresValueCommit;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function setBookmarkPendingFailureHandler(data:Object,
+                                                 info:Object):void
+    {
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function setBookmarkPendingResultHandler(data:Object,
+                                                info:Object):void
+    {
+        var placeHolder:CursorBookmark;
+
+        placeHolder = iterator.bookmark;
+        try 
+        {
+            iterator.seek(CursorBookmark.FIRST, info.value);
+			this[info.property] = iterator.bookmark;
+        }
+        catch(e:ItemPendingError)
+        {
+			e.addResponder(new ItemResponder(setBookmarkPendingResultHandler, setBookmarkPendingFailureHandler,
+						info ));
+        }
+        iterator.seek(placeHolder);
+
     }
 
     /**

            caretIndex += length;
            
            placeHolder = iterator.bookmark;
            iterator.seek(CursorBookmark.FIRST, caretIndex);
            caretBookmark = iterator.bookmark;
            iterator.seek(placeHolder);
        }
        

            anchorIndex -= length;
            
            placeHolder = iterator.bookmark;
			try
			{
				iterator.seek(CursorBookmark.FIRST, anchorIndex);
				anchorBookmark = iterator.bookmark;
			}
			catch (e:ItemPendingError)
			{
				e.addResponder(new ItemResponder(setBookmarkPendingResultHandler, setBookmarkPendingFailureHandler,
								{ property: "anchorBookmark", value: anchorIndex } ));
			}
            iterator.seek(placeHolder);
        }
            
