Explaining cooperative multitasking in gevent