poll returns null on timeout, of course
Merge branch 'master'