use thread limit rather than delay