Manual merge of Python 3 async abstraction  (not really rebasable...).