Expose async api

Just a naive attempt to expose the future api to user

The spec sometimes freezes at
```
#add_event_listener
    calls the listener when frames with stream ID -1 arrives
  with error conditions
    when receiving a bad frame
      does not kill the reactor
```