change promises to event-stream