22var util = require ( 'util' ) ,
33 Browser = require ( '../browser' ) ,
44 Pool = require ( './pool' ) ,
5- signalHandler = require ( '../signal-handler' ) ,
65 _ = require ( 'lodash' ) ,
7- Promise = require ( 'bluebird' ) ;
6+ Promise = require ( 'bluebird' ) ,
7+ CancelledError = require ( '../errors/cancelled-error' ) ;
88
99var activeSessions = { } ;
1010
@@ -23,15 +23,16 @@ util.inherits(BasicPool, Pool);
2323
2424Pool . prototype . getBrowser = function ( id ) {
2525 var _this = this ,
26- browser = Browser . create ( this . _config . forBrowser ( id ) ) ,
27- launchPromise = browser . launch ( this . _calibrator ) ;
26+ browser = Browser . create ( this . _config . forBrowser ( id ) ) ;
2827
29- activeSessions [ browser . id ] = {
30- browser : browser ,
31- launchPromise : launchPromise
32- } ;
28+ return browser . launch ( this . _calibrator )
29+ . then ( ( ) => {
30+ if ( this . _cancelled ) {
31+ return Promise . reject ( new CancelledError ( ) ) ;
32+ }
3333
34- return launchPromise
34+ activeSessions [ browser . sessionId ] = browser ;
35+ } )
3536 . then ( browser . reset . bind ( browser ) ) . thenReturn ( browser )
3637 . catch ( function ( e ) {
3738 return _this . freeBrowser ( browser )
@@ -42,19 +43,16 @@ Pool.prototype.getBrowser = function(id) {
4243} ;
4344
4445Pool . prototype . freeBrowser = function ( browser ) {
45- delete activeSessions [ browser . id ] ;
46+ delete activeSessions [ browser . sessionId ] ;
4647 return browser . quit ( ) ;
4748} ;
4849
49- signalHandler . on ( 'exit' , function ( ) {
50- console . log ( 'Killing browsers...' ) ;
51- return _ ( activeSessions )
52- . map ( function ( session ) {
53- var quit_ = session . browser . quit . bind ( session . browser ) ;
54- return session . launchPromise . then ( quit_ ) ;
55- } )
56- . thru ( Promise . all )
57- . value ( ) ;
58- } ) ;
50+ Pool . prototype . cancel = function ( ) {
51+ this . _cancelled = true ;
52+
53+ _ . forEach ( activeSessions , ( browser ) => browser . quit ( ) ) ;
54+
55+ activeSessions = { } ;
56+ } ;
5957
6058module . exports = BasicPool ;
0 commit comments