Give deferreds a constructor for better debugability, use internal creation for perf