Promisified methods that the user should be able to use, I left some callbacks internally because it's simpler (unzip)