internal static Task <IAwesomeBinding> Bind(IWebView view, object iViewModel, object additional, JavascriptBindingMode iMode, Action First, Action CleanUp) { TaskCompletionSource <IAwesomeBinding> tcs = new TaskCompletionSource <IAwesomeBinding>(); view.ExecuteWhenReady(() => { try { if (First != null) { First(); } var mapper = new BidirectionalMapper(iViewModel, view, iMode, additional); mapper.Init().ContinueWith(_ => tcs.SetResult(new AwesomeBinding(mapper, CleanUp))); } catch (Exception e) { tcs.SetException(e); } }); return(tcs.Task); }