explicitly use delay's finish callback