fopen で HTTP タイムアウト指定の不思議な挙動

<?php
$context = stream_context_create(array('http'=>array('method'=>'GET','timeout' => 4)));
$start = microtime(true);
$fp = @fopen('http://{sleep(60)するだけの php スクリプト}.php', 'rb', false, $context);
$end = microtime(true);
var_dump($end - $start);

タイムアウト秒数を 4 にしてる。
サーバーにそもそもつながらないとかの場合は、指定秒数で処理が返ってくる。
上みたいに繋がりはするけど応答が返ってこない場合は、指定秒数の 2 倍の時間かかって返ってくる。