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


                catch(e2:ItemPendingError)
                {
                    e2.addResponder(new ItemResponder(selectionDataPendingResultHandler, selectionDataPendingFailureHandler,
                                                            new ListBaseSelectionDataPending(false, index, items, CursorBookmark.FIRST, index)));
                    return;
                }
            }
