lep: pull based event loop