cook() with callback.