      
      - parameter completion: The block to be executed when the authorization process ends.
      */
-    open func authorize(_ completion: Completion) {
+    open func authorize(_ completion: @escaping Completion) {
         self.completion = completion as Completion?
         
         switch responseType {

     
     - parameter completion: The block to be executed when the refresh token process ends.
     */
    open func refreshToken(_ completion: Completion) {
        guard let refreshToken = token?.refreshToken else {
            let error = Error.other("", "")
            completion(Result.failure(error))

// MARK: - Request Token

private extension Provider {
    func requestToken(_ grantType: GrantType, completion: @escaping Completion) {
        let params = tokenRequestParams(grantType)
        
        HTTP.POST(tokenURL!, parameters: params) { resultJSON in
