add MtContextCallable
add null check
move restore MtContext to finally block, ensure restore