// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. (function(global, utils, extrasUtils) { "use strict"; %CheckIsBootstrapping(); // ------------------------------------------------------------------- // Imports var AsyncFunctionNext; var AsyncFunctionThrow; var PromiseReject; var PromiseResolve; var PromiseThen; utils.Import(function(from) { AsyncFunctionNext = from.AsyncFunctionNext; AsyncFunctionThrow = from.AsyncFunctionThrow; PromiseReject = from.PromiseCreateRejected; PromiseResolve = from.PromiseCreateResolved; PromiseThen = from.PromiseThen; }); // ------------------------------------------------------------------- function AsyncFunctionAwait(generator, value) { return %_Call( PromiseThen, PromiseResolve(value), function(sentValue) { return %_Call(AsyncFunctionNext, generator, sentValue); }, function(sentError) { return %_Call(AsyncFunctionThrow, generator, sentError); }); } %InstallToContext([ "async_function_await", AsyncFunctionAwait ]); })