added Task.effective_invoke method