Make the top-level metadata parser use Promises too!