update onBeginFetch to support cancel fetch