@@ -113,7 +113,8 @@ LongrunningApiCaller.prototype._wrapOperation = function(
113113 var operation = new Operation (
114114 rawResponse ,
115115 longrunningDescriptor ,
116- backoffSettings
116+ backoffSettings ,
117+ settings
117118 ) ;
118119
119120 callback ( null , operation , rawResponse ) ;
@@ -130,8 +131,11 @@ LongrunningApiCaller.prototype._wrapOperation = function(
130131 * operations service client and unpacking mechanisms for the operation.
131132 * @param {BackoffSettings } backoffSettings - The backoff settings used in
132133 * in polling the operation.
134+ * @param {CallOptions= } callOptions - CallOptions used in making get operation
135+ * requests.
133136 */
134- function Operation ( grpcOp , longrunningDescriptor , backoffSettings ) {
137+ function Operation (
138+ grpcOp , longrunningDescriptor , backoffSettings , callOptions ) {
135139 events . EventEmitter . call ( this ) ;
136140 this . completeListeners = 0 ;
137141 this . hasActiveListeners = false ;
@@ -141,8 +145,9 @@ function Operation(grpcOp, longrunningDescriptor, backoffSettings) {
141145 this . result = null ;
142146 this . metadata = null ;
143147 this . backoffSettings = backoffSettings ;
144- this . unpackResponse_ ( grpcOp ) ;
145- this . listenForEvents_ ( ) ;
148+ this . _unpackResponse ( grpcOp ) ;
149+ this . _listenForEvents ( ) ;
150+ this . _callOptions = callOptions ;
146151}
147152util . inherits ( Operation , events . EventEmitter ) ;
148153
@@ -156,7 +161,7 @@ util.inherits(Operation, events.EventEmitter);
156161 *
157162 * @private
158163 */
159- Operation . prototype . listenForEvents_ = function ( ) {
164+ Operation . prototype . _listenForEvents = function ( ) {
160165 var self = this ;
161166
162167 this . on ( 'newListener' , function ( event ) {
@@ -221,28 +226,33 @@ Operation.prototype.getOperation = function(callback) {
221226
222227 function promisifyResponse ( ) {
223228 if ( ! callback ) {
224- if ( self . latestResponse . error ) {
225- var error = new Error ( self . latestReponse . error . message ) ;
226- error . code = self . latestReponse . error . code ;
227- return Promise . reject ( error ) ;
228- }
229- return Promise . resolve ( [ self . result , self . metadata , self . latestResponse ] ) ;
229+ var PromiseCtor = self . _callOptions . promise ;
230+ return new PromiseCtor ( function ( resolve , reject ) {
231+ if ( self . latestResponse . error ) {
232+ var error = new Error ( self . latestReponse . error . message ) ;
233+ error . code = self . latestReponse . error . code ;
234+ reject ( error ) ;
235+ } else {
236+ resolve ( [ self . result , self . metadata , self . latestResponse ] ) ;
237+ }
238+ } ) ;
230239 }
231240 return ;
232241 }
233242
234243 if ( this . latestResponse . done ) {
235- this . unpackResponse_ ( this . latestResponse , callback ) ;
244+ this . _unpackResponse ( this . latestResponse , callback ) ;
236245 return promisifyResponse ( ) ;
237246 }
238247
239248 this . currentCallPromise_ =
240- operationsClient . getOperation ( { name : this . latestResponse . name } ) ;
249+ operationsClient . getOperation (
250+ { name : this . latestResponse . name } , this . _callOptions ) ;
241251
242252 var noCallbackPromise = this . currentCallPromise_
243253 . then ( function ( responses ) {
244254 self . latestResponse = responses [ 0 ] ;
245- self . unpackResponse_ ( responses [ 0 ] , callback ) ;
255+ self . _unpackResponse ( responses [ 0 ] , callback ) ;
246256 return promisifyResponse ( ) ;
247257 } ) ;
248258
@@ -251,7 +261,7 @@ Operation.prototype.getOperation = function(callback) {
251261 }
252262} ;
253263
254- Operation . prototype . unpackResponse_ = function ( op , callback ) {
264+ Operation . prototype . _unpackResponse = function ( op , callback ) {
255265 var responseDecoder = this . longrunningDescriptor . responseDecoder ;
256266 var metadataDecoder = this . longrunningDescriptor . metadataDecoder ;
257267 var response ;
@@ -353,8 +363,8 @@ Operation.prototype.startPolling_ = function() {
353363 */
354364Operation . prototype . promise = function ( ) {
355365 var self = this ;
356-
357- return new Promise ( function ( resolve , reject ) {
366+ var PromiseCtor = this . _callOptions . promise ;
367+ return new PromiseCtor ( function ( resolve , reject ) {
358368 self
359369 . on ( 'error' , reject )
360370 . on ( 'complete' , function ( result , metadata , rawResponse ) {
@@ -363,7 +373,22 @@ Operation.prototype.promise = function() {
363373 } ) ;
364374} ;
365375
366- exports . operation = function ( op , longrunningDescriptor , backoffSettings ) {
367- return new Operation ( op , longrunningDescriptor , backoffSettings ) ;
368- } ;
376+ /**
377+ * Method used to create Operation objects.
378+ *
379+ * @constructor
380+ *
381+ * @param {google.longrunning.Operation } op - The operation to be wrapped.
382+ * @param {LongrunningDescriptor } longrunningDescriptor - This defines the
383+ * operations service client and unpacking mechanisms for the operation.
384+ * @param {BackoffSettings } backoffSettings - The backoff settings used in
385+ * in polling the operation.
386+ * @param {CallOptions= } callOptions - CallOptions used in making get operation
387+ * requests.
388+ */
389+ exports . operation =
390+ function ( op , longrunningDescriptor , backoffSettings , callOptions ) {
391+ return new Operation (
392+ op , longrunningDescriptor , backoffSettings , callOptions ) ;
393+ } ;
369394
0 commit comments