 		}
 	}
 	
-	func requestPromiseForCollection<T: BaseMappable>(_ target: Target, type: T.Type, atKeyPath keyPath: String? = nil) -> Promise<[T]> {
+	public func requestPromiseForCollection<T: BaseMappable>(_ target: Target, type: T.Type, atKeyPath keyPath: String? = nil) -> Promise<[T]> {
 		return Promise<[T]> { [weak self] fulfill, reject in
 			self?.request(target) { result in
 				switch result {

}

public extension MoyaProvider {
	func requestPromise<T: BaseMappable>(_ target: Target, type: T.Type, atKeyPath keyPath: String? = nil) -> Promise<T> {
		return Promise<T> { [weak self] fulfill, reject in
			self?.request(target) { result in
				switch result {

public class OAuthMoyaPromise<Target>: MoyaProvider<Target> where Target: TargetType {
	private(set) var oAuth: OAuth
	
	public init(oAuth: OAuth,
	     endpointClosure: @escaping EndpointClosure = MoyaProvider.defaultEndpointMapping,
	     requestClosure: @escaping RequestClosure = MoyaProvider.defaultRequestMapping,
	     stubClosure: @escaping StubClosure = MoyaProvider.neverStub,
