結論を言うとCURLOPT_RETURNTRANSFERを指定してなかったからですね。
CURLOPT_RETURNTRANSFERにTRUEを指定しないと成功時にTRUE、失敗時にFALSEをかえすようです。
デバックの時には返り値を出力して確認していたので、TRUEやFALSEではなく数値で出力されていたのが混乱を招いていました。
そのため下記のように指定する必要があります。
curl_exec
$ch = curl_init($request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec ($ch);
こんな事で小一時間も悩む人がこの世から消えますように。