how does event loop works