whenDone with timeout setting