             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);
         }
         

    /**
     *  @private
     */
    private function selectionDataPendingResultHandler(
                                    data:Object,
                                    info:ListBaseSelectionDataPending):void
    {
        // trace("selectionDataPendingResultHandler", this);
        if (info.bookmark)
            iterator.seek(info.bookmark, info.offset);
        setSelectionDataLoop(info.items, info.index, info.useFind);
    }


            caretIndex -= length;
            
            placeHolder = 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);

    }

    /**
