tasks now have a special onError argument