JsPromise implementation

Signed-off-by: Ben Jackman <ben@jackman.biz>