dom/builder: make building pluggable like the formatter
http/request: allow multiple event registrations
http: return promises in asynchronous helpers