refactor the gthread worker for a better usage of asyncio

we have the possibility to pass a data payload to the poller when
registering a file object. We are using this possibility to pass a
callback. the callback will either accept or handle a connection when
the read event is triggered.

while I am here make the future result asynchronous so we don't block
the I/O event handling.