First pass at raw javascript async api