I did something similiar. I hate polling but in this case, probably better than a second ResetEvent and the potential race conditions between them.
_newItemEventSlim.Set();
// wait for _newItemEventSlim to be reset
for (var delayMilliseconds = 0; delayMilliseconds < 500; delayMilliseconds *= 2)
{
if (!_newItemEventSlim.IsSet)
break;
Thread.Sleep(delayMilliseconds);
}