is checked maxTries times, or overallTimeout is reached</p><divclass="fullcomment"><divclass="comment cmt"><p>Returns a future that resolved when the condition becomes true, the condition
is checked maxTries times, or overallTimeout is reached</p></div><dlclass="paramcmts block"><dtclass="param">condition</dt><ddclass="cmt"><p>The blocking condition</p></dd><dtclass="param">maxTries</dt><ddclass="cmt"><p>If condition is tried this many times, an exception is thrown</p></dd></dl><dlclass="attributes block"><dt>Definition Classes</dt><dd><ahref="../../asyncutil/AsyncUtil.html"name="org.bitcoins.asyncutil.AsyncUtil"id="org.bitcoins.asyncutil.AsyncUtil"class="extype">AsyncUtil</a></dd></dl></div></li><liclass="indented0 "name="org.bitcoins.asyncutil.AsyncUtil#awaitConditionF"group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="awaitConditionF(conditionF:()=>scala.concurrent.Future[Boolean],interval:scala.concurrent.duration.FiniteDuration,maxTries:Int)(implicitec:scala.concurrent.ExecutionContext):scala.concurrent.Future[Unit]"class="anchorToMember"></a><aid="awaitConditionF(()=>Future[Boolean],FiniteDuration,Int)(ExecutionContext):Future[Unit]"class="anchorToMember"></a><spanclass="permalink"><ahref="../../../../org/bitcoins/testkit/async/TestAsyncUtil$.html#awaitConditionF(conditionF:()=>scala.concurrent.Future[Boolean],interval:scala.concurrent.duration.FiniteDuration,maxTries:Int)(implicitec:scala.concurrent.ExecutionContext):scala.concurrent.Future[Unit]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">awaitConditionF</span><spanclass="params">(<spanname="conditionF">conditionF: () =><ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="https://www.scala-lang.org/api/2.13.8/scala/Boolean.html#scala.Boolean"name="scala.Boolean"id="scala.Boolean"class="extype">Boolean</a>]</span>, <spanname="interval">interval: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/duration/FiniteDuration.html#scala.concurrent.duration.FiniteDuration"name="scala.concurrent.duration.FiniteDuration"id="scala.concurrent.duration.FiniteDuration"class="extype">FiniteDuration</a> = <spanclass="symbol"><spanclass="name"><ahref="../../asyncutil/AsyncUtil$.html">AsyncUtil.DEFAULT_INTERVAL</a></span></span></span>, <spanname="maxTries">maxTries: <ahref="https://www.scala-lang.org/api/2.13.8/scala/Int.html#scala.Int"name="scala.Int"id="scala.Int"class="extype">Int</a> = <spanclass="symbol"><spanclass="name"><ahref="../../asyncutil/AsyncUtil$.html">DEFAULT_MAX_TRIES</a></span></span></span>)</span><spanclass="params">(<spanclass="implicit">implicit </span><spanname="ec">ec: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/ExecutionContext.html#scala.concurrent.ExecutionContext"name="scala.concurrent.ExecutionContext"id="scala.concurrent.ExecutionContext"class="extype">ExecutionContext</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="https://www.scala-lang.org/api/2.13.8/scala/Unit.html#scala.Unit"name="scala.Unit"id="scala.Unit"class="extype">Unit</a>]</span></span><divclass="fullcomment"><dlclass="attributes block"><dt>Definition Classes</dt><dd><ahref="../../asyncutil/AsyncUtil.html"name="org.bitcoins.asyncutil.AsyncUtil"id="org.bitcoins.asyncutil.AsyncUtil"class="extype">AsyncUtil</a></dd></dl></div></li><liclass="indented0 "name="scala.AnyRef#clone"group="Ungrouped"fullComment="yes"data-isabs="false"visbl="prt"><aid="clone():Object"class="anchorToMember"></a><aid="clone():AnyRef"class="anchorToMember"></a><spanclass="permalink"><ahref="../../../../org/bitcoins/testkit/async/TestAsyncUtil$.html#clone():Object"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><span
TestAsyncUtil methods are being called from tests and as such, we want to trim the stack
trace to exclude stack elements that occur before the beginning of a test.</p><divclass="fullcomment"><divclass="comment cmt"><p>As opposed to the AsyncUtil in the rpc project, in the testkit, we can assume that
TestAsyncUtil methods are being called from tests and as such, we want to trim the stack
trace to exclude stack elements that occur before the beginning of a test.
Additionally, we want to transform RpcRetryExceptions to TestFailedExceptions which
conveniently mention the line that called the TestAsyncUtil method.