Each remote source of a page - a data= URL, a .curl file, the {curl} tag - is fetched when the template reaches it, one after another, so the page waits for the sum of them all. padPrefetch in the page's PHP puts them on the wire together, and the wait is the slowest answer.

Each answer is kept as data under its name, so the template reads it like any data set:

PHP
fragments/prefetch_1.php
HTML
fragments/prefetch_1.pad
Result
<?php

padPrefetch
( [
'rates' => 'SELF://manual/?fragments/rates&padInclude',
'weather' => 'SELF://manual/?fragments/weather&padInclude',
],
600 );

?>
<p>{rates}{$code} {$rate} {/rates}</p>
<p>{weather}{$city}: {$sky} {/weather}</p>

EUR 1 USD 1.08 GBP 0.86

Amsterdam: clouds Lisbon: sun

A source is a URL - SELF:// for this server - or an array as padCurl() takes it, with headers or a post. A second argument is a ttl, as remote data takes it: a source with a fresh copy is not fetched at all, and one that fails is answered with its last good copy. A source that fails without one is an error, like a failing data=. The parsed sets are returned too, under the same names.