[major] allow data to be a (a)sync function