nit: we usually omit the delay parameter to `setTimeout` when it's 0.