delay: require thread