Task run done callback is optional when it‘s a sync task. Close #37