· 10 years ago · Sep 22, 2016, 08:00 PM
1➜ home_kitchen-api git:(master) ✗ npm run fetch-amazon-api
2
3> api-babyay-com@0.0.1 fetch-amazon-api /home/adam/apps/home_kitchen-api
4> better-npm-run fetch-amazon-api
5
6running better-npm-run in /home/adam/apps/home_kitchen-api
7Executing script: fetch-amazon-api
8
9to be executed: node ./src/utils/fetch-amazon-api.js
10localhost/stage_api_tinywise
11BOB Revolution SE Single Stroller :->
12Britax B-Agile 4 :->
13Baby Trend Expedition Jogger Stroller :->
14Bugaboo Bee 3 :->
15UPPAbaby Vista :->
16BOB Motion :->
17UPPAbaby Cruz :->
18Baby Jogger City Mini Single :->
19Mountain Buggy Swift :->
20City Mini City Select :->
21Summer Infant - 2015 3D Lite Convenience Stroller :->
22UPPAbaby G-Lite :->
23Kolcraft Cloud Plus Umbrella Stroller :->
24Chicco Liteway :->
25Babyzen YOYO Stroller :->
26UPPAbaby - G-Luxe :->
27Mountain Buggy - 2016 Nano Stroller :->
28Maclaren Mark II :->
29GB Pockit Stroller :->
30Joovy® - Groove Ultralight Umbrella :->
31BOB 2016 Revolution SE :->
32BOB 2016 Revolution Flex :->
33Thule Urban Glide :->
34Baby Trend Expedition LX Jogger :->
35Baby Jogger Summit X3 :->
36Mountain Buggy Terrain :->
37BOB Ironman :->
38Joovy Zoom 360 Ultralight :->
39Graco Fastaction Fold Jogger Click Connect :->
40Britax Marathon G4 ClickTight :->
41Chicco NextFit :->
42Graco Nautilus 3-in-1 :->
43Diono Radian RXT :->
44Britax Advocate ClickTight :->
45Peg Perego Primo Viaggio SIP :->
46Graco My Ride 65 LX :->
47Maxi-Cosi Pria 85 :->
48Graco SnugRide Click Connect 35 :->
49Chicco Keyfit 30 Infant Car Seat :->
50Evenflo Embrace LX :->
51Maxi-Cosi Mico Max 30 Infant Car Seat :->
52Britax B-Safe 35 :->
53Peg Perego Primo Viaggio 4-35 :->
54UPPAbaby Mesa :->
55Baby Trend Flex-Loc Infant Car Seat :->
56Graco SnugRide Click Connect 40 :->
57Graco SnugRide 30 Classic Connect :->
58Medela Pump in Style :->
59Lansinoh Affinity :->
60Spectra Baby USA S1 Hospital Grade :->
61Medela Freestyle :->
62Philips Avent Comfort Breast Pump :->
63Lansinoh Signature Pro Double Electric Breast Pump :->
64Medela Swing Single Electric :->
65Evenflo Feeding Advanced Double Pump :->
66Spectra DEW 350 Hospital Grade :->
67Ameda Purely Yours :->
68Tommee Tippee Closer to Nature Bottle :->
69Comotomo Natural Feel :->
70Philips AVENT Natural Bottles :->
71Dr. Brown's Glass Bottles :->
72Medela Breastmilk Bottle :->
73Born Free Premium Glass Bottle :->
74Dr. Brown's BPA Free Natural Flow Wide :->
75Playtex BPA Free VentAire Bottle :->
76Munchkin Latch BPA-Free Baby Bottle :->
77The First Years Breastflow Bottles :->
78Ergobaby Four Position 360 :->
79Boba 4G :->
80LILLEbaby COMPLETE ALL SEASONS 6-in-1 Baby Carrier :->
81Tula Ergonomic Baby :->
82Baby K'tan Original Baby Carrier :->
83Infantino Sash Mei Tai Carrier :->
84BabyBjorn Original :->
85BabyBjorn Baby Carrier One :->
86BabyBjorn Baby Carrier Miracle :->
87DaVinci Jayden 3-Drawer Changer Dresser :->
88Delta Children Sweet Beginnings Bassinet :->
89Infantino Flip Front 2 Back Carrier :->
90Skip Hop Duo Diaper Bag :->
91Marc Jacobs Eliz-a-Baby Bag :->
92Lassig Green Label :->
93Ju-Ju-Be Be Right Back Backpack :->
94Babymel Satchel :->
95Skip Hop Chelsea Downtown Chic :->
96Petunia Pickle Bottom Satchel :->
97Ju-Ju-Be Be Prepared Bag :->
98Storksak Bobby :->
99BEABA Stockholm :->
100Infant Optics DXR-8 Video Baby Monitor :->
101Summer Infant Dual View Digital Color Video Baby Monitor :->
102Motorola MBP36S Remote Wireless Video Baby Monitor :->
103VTech VM321-2 Safe & Sound Video Baby Monitor :->
104Infant Optics DXR-5 Video Baby Monitor :->
105Hellobaby Security Digital Baby Video Camera :->
106Summer Infant In View Video Baby Monitor :->
107Philips Avent Digital Video Baby Monitor :->
108Samsung BrightVIEW HD :->
109Levana Ayden 3.5“ Digital Video Baby Monitor :->
110Baby Jogger City Select Double :->
111Baby Trend Sit N Stand Ultra :->
112Baby Jogger City Mini GT Double :->
113ZOE XL2 DELUXE - Double Xtra Lightweight Stroller :->
114Britax B-Ready Double :->
115BOB 2016 Revolution SE Duallie Stroller :->
116BOB 2016 Revolution Flex Duallie Stroller :->
117Graco FastAction Fold Duo Click Connect Stroller :->
118Philips Avent DECT SCD570-10 :->
119VTech DM221 Safe & Sound Digital :->
120Summer Infant Babble Band Wearable :->
121Philips Avent DECT SCD560 :->
122Angelcare Baby Sound AC420 :->
123The First Years Crisp and Clear :->
124VTech DM222 Safe & Sound Digital :->
125Safety 1st Ultimate DECT Wee Voice :->
126Graco Secure Coverage Digital :->
127Sony BabyCall NTM-910 :->
128Angelcare AC1100 :->
129Angelcare AC401 :->
130Snuza Hero SE :->
131Angelcare AC1300 :->
132Babysense 5s :->
133Snuza Go! :->
134Angelcare AC300 :->
135MonBaby Smart Baby :->
136Mimo Smart Baby Monitor :->
137BOB Revolution SE Single :->
138Summer Infant 3D Lite Convenience Stroller :->
139BOB 2016 Revolution PRO Stroller :->
140Britax 2016 B-Agile Double Stroller :->
141Baby Trend Expedition Jogger :->
142ZOE XL2 DELUXE Double Xtra Lightweight Twin Stroller System :->
143Summer Infant 3D One Convenience Stroller :->
144Baby Trend Sit N Stand Double Stroller :->
145Joovy Caboose Stand On Tandem Stroller :->
146Chicco Bravo Trio Travel System :->
147Delta Children Infant Changing Table with Pad :->
148Badger Basket Baby Changing Table :->
149Delta Children Eclipse Changing Table :->
150Stork Craft Avalon 6 Drawer Universal Dresser :->
151Badger Basket Modern Changing Table :->
152Badger Basket Company Sleigh Style Changing Table :->
153Dream On Me Emily Changing Table :->
154Graco Pack N Play Playard Bassinet :->
155HALO Bassinest Swivel Sleeper Bassinet - Premiere Series :->
156Kolcraft Cuddle 'N Care 2-in-1 Bassinet and Incline :->
157Arm's Reach Concepts Co-Sleeper Bassinet Mini Arc :->
158Contours Classique Wood Bassinet :->
159Babybjorn Cradle :->
160Arm's Reach Concepts Clear-Vue Co-Sleeper :->
161HALO Bassinest Swivel Sleeper Bassinet - Essentia Series :->
162Arm's Reach Concepts Co-Sleeper Bedside Bassinet :->
163DaVinci Kalani 4-in-1 Convertible Crib with Toddler Rail :->
164DaVinci Jayden 4-in-1 Convertible Crib :->
165babyletto Hudson 3-in-1 Convertible Crib with Toddler Rail :->
166Babyletto Gelato Crib And Dresser Combo White Feet :->
167DaVinci Jenny Lind 3-in-1 Convertible Crib :->
168Union 3-in-1 Convertible Crib :->
169babyletto Modo 3 in 1 Crib with Toddler Rail :->
170Fisher-Price My Little Snugapuppy Cradle and Swing :->
171Fisher-Price Deluxe Take Along Swing :->
172Graco Glider LX Gliding Swing :->
173Comfort & Harmony Cozy Kingdom Portable Swing :->
174Fisher-Price Snugabunny Cradle 'N Swing :->
175Fisher-Price 4-in-1 Rock 'n Glide Soother :->
1764moms - mamaRoo Baby Swing :->
177Fisher-Price Moonlight Meadow Cradle 'n Swing :->
178Fisher-Price Papasan Cradle Swing :->
179Graco DuetSoothe Swing and Rocker :->
180Joovy Spoon Walker :->
181Bright Starts Walk-A-Bout Walker :->
182Disney Minnie Music and Lights Walker :->
183Baby Einstein Baby Neptune Walker :->
184Kolcraft Tiny Steps 2-in-1 Activity Walker :->
185Bright Starts Around We Go 3-in-1 :->
186Safety 1st Sounds 'n Lights Activity Walker :->
187Safety 1st Ready, Set, Walk! Walker :->
188Delta Children Lil' Drive Baby Activity Walker :->
189Fisher Price Rainforest Jumperoo :->
190Infant Optics DXR-8 Video Monitor :->
191Comotomo Baby Bottle :->
192Summer Infant 2015 3D Lite Convenience Stroller :->
193The First Years Sure Comfort Deluxe Newborn To Toddler Tub :->
194Vulli Sophie la Girafe :->
195Safety 1st Heavenly Dreams White Crib Mattress :->
196Regalo Easy Step Walk Thru Gate :->
197Angelcare AC601 Simplicity Movement & Sound Monitor :->
198Pampers Swaddlers Diapers :->
199Pampers Cruisers Diapers :->
200Huggies Overnites Diapers :->
201Huggies Little Movers Diapers :->
202Pampers Baby Dry Diapers :->
203Bambo Nature Premium Baby Diapers :->
204Luvs Ultra Leakguards Diapers :->
205Earth's Best Chlorine-Free Diapers :->
206Huggies Snug and Dry Diapers :->
207The Honest Company Diapers :->
208WaterWipes Baby Wipes, Chemical-Free, Sensitive :->
209Babyganics Face, Hand & Baby Wipes :->
210Pampers Sensitive Wipes :->
211Huggies Natural Care Baby Wipes :->
212Huggies Simply Clean Unscented Soft Baby Wipes :->
213Pampers Softcare Baby Fresh Wipes :->
214Seventh Generation Thick & Strong Free and Clear Baby Wipes :->
215Huggies One & Done Refreshing Baby Wipes :->
216Pampers Natural Clean Wipes :->
217Seventh Generation Original Soft and Gentle Free and Clear Baby Wipes :->
218First 100 Words :->
219Lamaze Peek-A-Boo Forest Soft Book :->
220Goodnight Moon :->
221VTech Rhyme and Discover Book :->
222The Day the Crayons Quit :->
223Dear Zoo: A Lift-the-Flap Book :->
224The Going-To-Bed Book :->
225The Very Hungry Caterpillar :->
226Brown Bear, Brown Bear, What Do You See? :->
227Graco Pack N Play Playard Bassinet with Automatic Folding Feet :->
228Summer Infant Pop N' Play Portable Playard :->
229Graco Pack 'n Play Playard Bassinet Changer with Cuddle Cove Rocking Seat :->
230Graco Pack 'n Play Playard Reversible Napper & Changer :->
231Lotus Travel Crib and Portable Baby Playard :->
232Joovy Room2 Portable Playard :->
233Graco Pack 'N Play Playard Totbloc with Carry Bag :->
234Fisher-Price Ultra-Lite Day and Night Play Yard :->
235Graco Pack 'n Play Playard Bassinet Changer Snuggle Suite LX Baby Bouncer :->
236Graco Pack 'n Play Playard :->
237Graco Blossom 4 in 1 High Chair Seating System :->
238Peg Perego Siesta Highchair :->
239Graco TableFit Highchair :->
240Abiie Beyond Wooden High Chair with Tray :->
241Ingenuity Trio 3-in-1 High Chair :->
242BABYBJORN High Chair :->
243Chicco Vinyl Polly High Chair :->
244Fisher-Price 4-in-1 Total Clean High Chair :->
245Graco DuoDiner LX Highchair :->
246phil&teds Poppy Highchair :->
247Fisher-Price Rainforest Jumperoo :->
248Oribel PortaPlay Activity Center :->
249Fisher-Price Jumperoo :->
250Summer Infant Pop N' Jump Portable Activity Seat :->
251Fisher-Price Luv U Zoo Jumperoo :->
252Sassy Inspire The Senses Bounce Around Activity Center :->
253Baby Einstein Activity Jumper Special Edition :->
254Evenflo ExerSaucer Jump and Learn Jumper :->
255Bright Starts Springin' Safari Bounce-a-Bout Activity Center :->
256Fisher-Price Space Saver Jumperoo :->
257BabyBjorn Bouncer Balance Soft :->
258Fisher-Price My Little Snugapuppy Deluxe Bouncer :->
259Fisher-Price Baby's Bouncer :->
260Fisher-Price Comfort Curve Bouncer :->
261Ingenuity InReach Mobile Lounger and Bouncer :->
262Bright Starts Jungle Stream Bouncer :->
263Bright Starts Playful Pinwheels Bouncer :->
264Bright Starts Safari Smiles Bouncer :->
265Sassy Cuddle Bug Bouncer :->
266Fisher-Price Moonlight Meadow Deluxe Bouncer :->
267Britax Parkway SGL G1.1 Belt-Positioning Booster :->
268Chicco KidFit 2-in-1 Belt Positioning Booster :->
269Graco Affix Youth Booster Seat with Latch System :->
270Evenflo Maestro Booster Car Seat :->
271Britax Frontier Clicktight Combination Harness-2-Booster Car Seat :->
272mifold Grab-and-Go Car Booster Seat :->
273Graco Backless TurboBooster Car Seat :->
274Britax Pinnacle G1.1 ClickTight Harness-2-Booster Car Seat :->
275Graco Nautilus 65 3-in-1 Harness Booster :->
276Graco TurboBooster LX Car Seat :->
277Baby Relax Mikayla Upholstered Swivel Gliding Recliner :->
278DaVinci Olive Upholstered Swivel Glider with Bonus Ottoman :->
279Windsor Glider and Ottoman :->
280Baby Relax The Mackenzie Microfiber Plush Nursery Rocker Chair :->
281Angel Line Monterey Glider & Ottoman :->
282Pulaski Harmony Swivel Glider :->
2832xhome Modern Upholstered Eames Style Armchair :->
284Stork Craft Custom Hoop Glider and Ottoman :->
285Naomi Home Brisbane Glider & Ottoman Set :->
286Beige Bowback Glider Rocker Chair with Ottoman :->
287Summer Infant Multi-Use Deco Extra Tall Walk-Thru Gate :->
288Summer Infant Metal Expansion Gate, 6 Foot Wide Extra Tall Walk-Thru :->
289North States Supergate Deluxe Décor Metal Gate :->
290Regalo 192-Inch Super Wide Gate and Play Yard :->
291Regalo Easy Step Extra Tall Walk Thru Gate :->
292Safety 1st Nature Next Bamboo Gate :->
293North States Supergate Easy Swing and Lock Metal Gate :->
294Munchkin Easy-Close Metal Safety Gate :->
295Evenflo Position and Lock Tall Pressure Mount Wood Gate :->
296Nora's Nursery Baby Cloth Pocket or Cover Diapers with 7 Bamboo Inserts :->
297LBB Reusable Baby Cloth Pocket Diapers :->
298BumGenius 4.0 :->
299Thirsties Duo Wrap Snap :->
300gDiapers gPants :->
301BumGenius Freetime All in One Cloth Diaper :->
302Rumparooz One Size Cloth Diaper Cover Snap :->
303OsoCozy - Prefolds Unbleached Cloth Diapers :->
304GroVia Hybrid Snap Shell Diaper :->
305Alva Baby Pocket Cloth Diaper :->
306Peg Perego John Deere Ground Force Tractor with Trailer :->
307Schylling Silver Racecar Metal Speedster :->
308Power Wheels Thomas the Train Thomas with Track :->
309Little Tikes Cozy Coupe 30th Anniversary Car :->
310PlasmaCar Ride On Toy :->
311Step2 Whisper Ride II :->
312Radio Flyer Scoot-About :->
313Fisher-Price 3-in-1 Bounce :->
314Radio Flyer Classic Red Wagon :->
315Little Tikes Go and Grow Lil' Rollin' Giraffe Ride-on :->
316DaVinci Alpha Mini Rocking Crib :->
317Dream On Me Casco 3 in 1 Mini Crib and Changing Table Combo :->
318DaVinci Kalani 2-in-1 Mini Crib and Twin Bed :->
319Graco Travel Lite Crib with Stages :->
320Bloom Alma Mini Urban Mini Folding Crib :->
321Dream On Me Addison 4 in 1 Convertible Mini Crib :->
322Delta Children Portable Mini Crib :->
323DaVinci Annabelle 2-in-1 Mini Crib and Twin Bed :->
324Dream On Me 3 in 1 Aden Convertible Mini Crib :->
325babyletto Origami Mini Crib :->
326Lambs & Ivy Crib 4 Piece Bedding Set :->
327SoHo Froggies Party Baby Crib Nursery Bedding Set 13 pcs :->
328SoHo Gold Fish Aquarium Baby Crib Bedding Set 13 pcs :->
329Sweet Jojo Designs Turquoise Blue Gray and White Mod Elephant 11 Piece Crib Set :->
330Dream On Me 3 Piece Crib Bedding Set :->
331BreathableBaby Safety Crib 3 Piece Bedding Set :->
332Disney Finding Nemo Day At the Sea 3 Piece Crib Bedding Set :->
333Trend Lab Ombre Gray 3 Piece Crib Bedding Set :->
334Sweet Jojo Designs Outdoor Adventure Nature Fox Bear Animals 9 Piece Set :->
335Sweet Jojo Designs Chevron Zig Zag Gender Neutral Baby Bedding 4 Piece Set :->
336Bedtime Originals 3 Piece Crib Bedding Set :->
337Chevron Zig Zag Pink and Gray 5 Piece Baby Crib Bedding Set with Bumper :->
338GEENNY Boutique 13 Piece Crib Bedding Set :->
339Grey Elephant and Chevron Patchwork 4 Piece Crib Bedding Set with Purple Trim :->
340Bedtime Originals Lavender Woods 3 Piece Bedding Set :->
341Summer Infant 4 Piece Classic Bedding Set with Adjustable Crib Skirt :->
342SoHo Lavender Owls Party Baby Crib Nursery Bedding Set 14 pcs :->
343SoHo Lavender Flower Garden Baby Crib Nursery Bedding Set 13 pcs :->
344SoHo Pink Camo Baby Crib Nursery Bedding Set 13 pcs :->
345SoHo Pink Minky Dot Chenille Baby Crib Nursery Bedding Set 13 pcs :->
346GEENNY Boy Sailor 13 Piece Baby Nursery Crib Bedding Set :->
347Trend Lab Northwoods 3 Piece Crib Bedding Set :->
348GEENNY Boutique 13 Piece Crib Bedding Set - Boys :->
349Bedtime Originals Jungle Buddies 3 Piece Crib Bedding Set :->
350Bacati Elephants Blue/Grey 10 pc crib set including Bumper Pad :->
351Bedtime Originals Mod Monkey 3 Piece Bedding Set :->
352Bedtime Originals Honey Bear 3 Piece Crib Bedding Set :->
353Little Bedding by NoJo 3 Little Monkeys 10 Piece Crib Bedding Set :->
354SoHo Dinosaur Baby Crib Nursery Bedding Set 14 pcs :->
355Bacati Elephants 10 Piece Crib Set with Bumper Pad :->
356Fisher-Price Newborn Auto Rock 'n Play Sleeper :->
357Fisher-Price My Little Snugapuppy Deluxe Newborn Rock N Play Sleeper :->
358Fisher-Price Infant To Toddler Rocker :->
359Bright Starts 2-in-1 Toucan Tango Rock and Swing :->
360Fisher-Price Moonlight Meadow Deluxe Newborn Rock 'n Play Sleeper :->
361Fisher-Price Newborn Rock 'n Play Sleeper :->
362Fisher-Price Infant-to-Toddler Rocker :->
363Fisher-Price Newborn-to-Toddler Portable Rocker :->
364Graco Little Lounger Rocking Seat Plus Vibrating Lounger :->
365Tiny Love 3 in 1 Rocker Napper :->
366Fisher-Price Little Superstar Step N' Play Piano :->
367Bright Starts Around We Go 3-in-1 Activity Center Zippity Zoo :->
368Bright Starts 2-in-1 Silly Sunburst Activity Gym and Saucer :->
369Oribel Porta-Play Activity Center :->
370Evenflo Exersaucer Bounce & Learn :->
371Baby Einstein Rhythm of The Reef Activity Saucer :->
372Evenflo - ExerSaucer Activity Center :->
373Evenflo ExerSaucer World Explorer Triple Fun Saucer :->
374Evenflo Exersaucer Triple Fun Active Learning Center :->
375Evenflo ExerSaucer Double Fun Saucer :->
376Ju-Ju-Be Legacy Collection B.F.F. Convertible Diaper Bag :->
377Ju-Ju-Be Legacy Nautical Collection Be Right Back Backpack Diaper Bag :->
378Skip Hop Forma Backpack :->
379Ju-Ju-Be Be Right Back Backpack Diaper Bag :->
380Lassig Vintage Style Diaper Backpack Bag :->
381Petunia Pickle Bottom Boxy Backpack :->
382Skip Hop Chelsea Downtown Chic Diaper Backpack :->
383JJ Cole Backpack Diaper Bag :->
384Skip Hop Duo Diaper Backpack :->
385Graco Gotham Smart Organizer System Back Pack Diaper Bag :->
386Skip Hop Zoo Pack Little Kid Backpack - Dino :->
387Yodo Upgraded Playful Kids Insulated Lunch Boxes Carry Bag :->
388JanSport Superbreak Backpack - Boys :->
389Herschel Supply Co. Settlement Backpack - Boys :->
390Olive Kids Trains, Planes and Trucks Pack 'n Snack :->
391Coavas Kids Backpack Funny Dinosaur Preschool Book Bag :->
392Pokemon Boys' Allover Print 17 Inch Backpack :->
393Obersee Kid's All-in-One Pre-School Backpacks with Integrated Cooler - Boys :->
394Hynes Eagle Chic School Backpack :->
395Coolwoo Kid Backpack :->
396Skip Hop Zoo Little Kid Backpack - Unicorn :->
397Skip Hop Zoo Backpack, Lunchie, and Bottle Set :->
398JanSport Superbreak Backpack - Girls :->
399SLL Kids Small Backpack Girls :->
400NOHOO Toddler Kids Cute Cartoon Backpack Animal Shaped Shoulder Book Bag :->
401Obersee Kid's All-in-One Pre-School Backpacks with Integrated Cooler - Girls :->
402Artone Canvas Tribal Stripes Travel Daypack Campus Backpack With Interior Pockets :->
403Herschel Supply Co. Settlement Backpack - Girls :->
404JanSport Overexposed Backpack :->
405Moolecole Leather & Canvas Backpack School Bag Laptop Bag with Cat's Ears Design :->
406Bugaboo Storksak Diaper Bag :->
407Oemi Leather Diaper Bag :->
408Kate Spade Honey Baby Bag Kennedy Park :->
409Marc By Marc Jacobs Core Pretty Elizababy Shoulder Bag :->
410Michael Kors Jet Set Large Nylon Pocket Baby Diaper Bag :->
411Storksak Elizabeth Leather Diaper Bag :->
412Kate Spade Taden Baby Bag Blake Avenue :->
413Rebecca Minkoff Knocked Up Diaper Handbag :->
414Tory Burch Quilted Nylon Baby Bag :->
415Coach Signature Multifunction Tote and Baby Diaper Bag :->
416Ubbi Steel Diaper Pail :->
417Playtex Genie Elite Pail System Diaper with Odor Lock Carbon Filter :->
418Munchkin Step Diaper Pail Powered by Arm & Hammer :->
419Diaper Dekor Plus Pail :->
420Playtex Diaper Genie Complete Diaper Pail :->
421Diaper Genie Essentials Diaper Disposal Pail :->
422Busch Systems - Odorless Cloth Diaper Pail :->
423Baby Trend Diaper Champ Deluxe :->
424Safety 1st Easy Saver Diaper Pail :->
425Tommee Tippee Simplee Diaper Pail :->
426Britax 2016 B-Agile/B-Safe 35 Travel System :->
427UPPAbaby Cruz Travel System :->
428Chicco Viaro Stroller Travel System :->
429Graco Aire3 Click Connect Travel System :->
430Graco FastAction Jogger Travel System :->
431Eddie Bauer TriTreck Travel System :->
432GB Evoq 4-In-1 Travel System :->
433Urbini - Modern Lightweight Compact Travel System :->
434Safety 1st Smooth Ride Travel System with onBoard 35 Infant Car Seat :->
435BEABA Babycook Pro :->
436Conair Cuisinart BFM-1000 Baby Food Maker and Bottle Warmer :->
437Magic Bullet Baby Bullet Baby Care System :->
438BEABA Babycook Plus :->
439Sage Spoonfuls Glass Homemade Essentials Package :->
440BEABA Babycook :->
441Babymoov Baby Food Maker Nutribaby Zen :->
442BEABA Original Babycook :->
443Lil' Jumbl - Versatile Baby Food Maker :->
444Baby Brezza One Step Baby Food Maker :->
445BABYBJORN Potty Chair :->
446BABYBJORN Toilet Trainer :->
447Ubbi 3-in-1 Potty or Toilet Trainer and Step Stool :->
448Summer Infant My Size Potty :->
449Summer Infant Lil' Loo Potty :->
450OXO Tot 2-in-1 Go Potty for Travel :->
451Summer Infant Step by Step Potty :->
452Fisher-Price Learn-to-Flush Potty :->
4532-in-1 Potette Plus :->
454Fisher-Price Custom Comfort Potty Training Seat :->
455BOB - 2016 Revolution FLEX Duallie Stroller :->
456Baby Jogger 2016 Summit X3 Double :->
457Thule Urban Glide Sport Stroller :->
458South Shore Savannah Collection Changing Table :->
459South Shore Cotton Candy Changing Table :->
460BOB 2016 Revolution PRO Duallie Stroller :->
461BOB Ironman Duallie Double Stroller :->
462phil&teds Sport Buggy Stroller with Double Kit V5 :->
463phil&teds S4 Inline Stroller :->
464Thule Cougar Two-Child Carrier :->
465Confidence 2-in-1 Double Baby/Child/Kids Bicycle Bike Trailer /Jogger :->
466Baby Trend Navigator Double Jogger Stroller :->
467Evenflo Tribute LX Convertible Car Seat :->
468Graco Contender 65 Convertible Car Seat :->
469Chicco Activ3 Jogging Stroller :->
470Contours Options Elite :->
471Britax B-Agile Double Stroller :->
472Dream On Me Casco 3 in 1 Mini Crib and Dressing Table Combo :->
473Fisher-Price Newbury 4-in-1 Convertible Crib :->
474Stork Craft Portofino 4-in-1 Fixed Side Convert :->
475Safety 1st Ready-Set-Walk Walker :->
476VTech Sit-to-Stand Learning Walker :->
477Summer Infant Contoured Changing Pad :->
478Giraffes Can't Dance :->
479Parse ASIN: B004DC9TAI
480Parse ASIN: B015XBXLMY
481Parse ASIN: B00UGN6RYO
482Parse ASIN: B00N12EOBA
483Parse ASIN: B013CTH8NC
484Parse ASIN: B01F0CMDY8
485Parse ASIN: B01I8EWEMQ
486Parse ASIN: B00G3XR7GS
487Parse ASIN: B00Z6JK98I
488Parse ASIN: B00GOCUX96
489Parse ASIN: B00O20OCVC
490Parse ASIN: B00NF9KKLC
491Parse ASIN: B017ERMTUK
492Parse ASIN: B01BWNCOIO
493Parse ASIN: B00N1U907A
494Parse ASIN: B015EBYO2O
495Parse ASIN: B019DRIT4Y
496Parse ASIN: B00904I1DA
497Parse ASIN: B01DQ2B8UY
498Parse ASIN: B00VSCXLA0
499Parse ASIN: B004DC9TAI
500Parse ASIN: B019EZD7Y2
501Parse ASIN: B00KNTHISK
502Parse ASIN: B003ZDK1US
503Parse ASIN: B019W8WIU0
504Parse ASIN: B00Z6JLFFO
505Parse ASIN: B01BSPDQ9M
506Parse ASIN: B015ZL8IX4
507Parse ASIN: B00UVW45Q2
508Parse ASIN: B00O2VQZ6G
509Parse ASIN: B019FNCJW4
510Parse ASIN: B00Y285WAE
511Parse ASIN: B005MQRAAK
512Parse ASIN: B013YCXAG6
513Parse ASIN: B00ISCPJM6
514Parse ASIN: B005WHQKI2
515Parse ASIN: B00JBYPKE2
516Parse ASIN: B00H8MQ4US
517Parse ASIN: B00MS9VTG0
518Parse ASIN: B00J69XJ04
519Parse ASIN: B00O9W3S22
520Parse ASIN: B0107CZ5U0
521Parse ASIN: B00J3KL4HG
522Parse ASIN: B00OU9347I
523Parse ASIN: B007O1NROO
524Parse ASIN: B00LIRJ2NU
525Parse ASIN: B00JRYSGT2
526Parse ASIN: B004HWXCJS
527Parse ASIN: B000P9XJ5E
528Parse ASIN: B00DBKFFJM
529Parse ASIN: B0013O9RX8
530Parse ASIN: B00N4R4C3M
531Parse ASIN: B011M2PW5C
532Parse ASIN: B000LPZTQY
533Parse ASIN: B00V0VQOLM
534Parse ASIN: B00ALP94A6
535Parse ASIN: B007SBGO2C
536Parse ASIN: B00K5KVC52
537Parse ASIN: B00GVFF16Q
538Parse ASIN: B00E1CI2W6
539Parse ASIN: B009WPUMX4
540Parse ASIN: B00D2W33ZC
541Parse ASIN: B0041C03WS
542Parse ASIN: B003KWNCEG
543Parse ASIN: B00005BTNA
544Parse ASIN: B00NZF1466
545Parse ASIN: B001G4RWG4
546Parse ASIN: B00I6IGG1A
547Parse ASIN: B00N9ZFNQE
548Parse ASIN: B00KC4VPNU
549Parse ASIN: B00RUF2CP4
550Parse ASIN: B000UYFULU
551Parse ASIN: B00IANV5M6
552Parse ASIN: B0009JOSNM
553Parse ASIN: B00DNQS6PO
554Parse ASIN: B005AUYEHA
555Parse ASIN: B003HIXOF0
556Parse ASIN: B00GJIXMQG
557Parse ASIN: B003I867WQ
558Parse ASIN: B00J4J2AQK
559Parse ASIN: B00591VZ6I
560Parse ASIN: B00GJY6EPG
561Parse ASIN: B00UAIUXK4
562Parse ASIN: B006UDFFP6
563Parse ASIN: B00DHFJUQK
564Parse ASIN: B008J7G1H2
565Parse ASIN: B001BZEJKK
566Parse ASIN: B00LIRJ8M0
567Parse ASIN: B00BUU0GSU
568Parse ASIN: B00ECHYTBI
569Parse ASIN: B00EU5AL8W
570Parse ASIN: B00M2F0OYS
571Parse ASIN: B00FLXB1YU
572Parse ASIN: B0052QYLUM
573Parse ASIN: B01GE2ZHNM
574Parse ASIN: B00I3K1D00
575Parse ASIN: B00E1CI5X2
576Parse ASIN: B018XZBVMY
577Parse ASIN: B01HKOP7RE
578Parse ASIN: B01F7DWY9O
579Parse ASIN: B00HT6EA2C
580Parse ASIN: B00G3XR9W0
581Parse ASIN: B01GLXJAJ6
582Parse ASIN: B0196GCQ50
583Parse ASIN: B004DC9TD0
584Parse ASIN: B01BQLPMPO
585Parse ASIN: B00MOJWK1M
586Parse ASIN: B00E1CIGAE
587Parse ASIN: B007NG5UEU
588Parse ASIN: B016Q0YY9U
589Parse ASIN: B00E9RMHD8
590Parse ASIN: B003FGWA8G
591Parse ASIN: B009Z4UWQY
592Parse ASIN: B00YWFJLHC
593Parse ASIN: B00DH2TL0S
594Parse ASIN: B00U7W3CFQ
595Parse ASIN: B00191MP3Y
596Parse ASIN: B0061PIHOE
597Parse ASIN: B00GU07FLQ
598Parse ASIN: B00IFE18B8
599Parse ASIN: B01AXVNHQY
600Parse ASIN: B00GTX269A
601Parse ASIN: B00OHF4RD0
602Parse ASIN: B00GU08JFW
603Parse ASIN: B00WDCWBD2
604Parse ASIN: B00K5UPQEK
605Parse ASIN: B004DC9TAS
606Parse ASIN: B00O20OCVC
607Parse ASIN: B01BSPDOQW
608Parse ASIN: B01CQVNPMU
609Parse ASIN: B00S0RF8JS
610Parse ASIN: B01GLXJAJ6
611Parse ASIN: B01BLN5YHI
612Parse ASIN: B003JTF2U2
613Parse ASIN: B01BMAW0L8
614Parse ASIN: B00YWHYX8W
615Parse ASIN: B00GUN41FQ
616Parse ASIN: B002HMC2AA
617Parse ASIN: B004FURIAG
618Parse ASIN: B00M42Y0CG
619Parse ASIN: B005OSHTXO
620Parse ASIN: B001FA0CN4
621Parse ASIN: B004EPYS5K
622Parse ASIN: B004Y9AKZI
623Parse ASIN: B00JXN54DI
624Parse ASIN: B005083IYM
625Parse ASIN: B00DMCYENW
626Parse ASIN: B005P4R4CS
627Parse ASIN: B008TML9AQ
628Parse ASIN: B008C2YKWC
629Parse ASIN: B00LPBV1J2
630Parse ASIN: B00BFBUYCC
631Parse ASIN: B0010TODHG
632Parse ASIN: B00LGTOOVU
633Parse ASIN: B007CRJHUI
634Parse ASIN: B017UMJ15K
635Parse ASIN: B002T1HH1I
636Parse ASIN: B00JN8YQVO
637Parse ASIN: B00IVNDWH6
638Parse ASIN: B00DGA06JQ
639Parse ASIN: B014D4HZWO
640Parse ASIN: B00PTL1MD4
641Parse ASIN: B00E3RKC36
642Parse ASIN: B00IVNEGLW
643Parse ASIN: B00NFETJCS
644Parse ASIN: B00PK3EO1S
645Parse ASIN: B00NFETJLY
646Parse ASIN: B000I5UZ1Q
647Parse ASIN: B00AO084CW
648Parse ASIN: B008BGNT4O
649Parse ASIN: B00GSX1XEU
650Parse ASIN: B00PNXHW46
651Parse ASIN: B00FNJ7FR4
652Parse ASIN: B00JYDF644
653Parse ASIN: B00OC8B1IQ
654Parse ASIN: B00BHUV3GC
655Parse ASIN: B017VNNX2U
656Parse ASIN: B00GJIY0SU
657Parse ASIN: B000LXQVA4
658Parse ASIN: B00ECHYTBI
659Parse ASIN: B009QXDE32
660Parse ASIN: B00O20OCVC
661Parse ASIN: B000067EH7
662Parse ASIN: B00C6QAAB0
663Parse ASIN: B004044LD4
664Parse ASIN: B001OC5UMQ
665Parse ASIN: B00SQHZ31U
666Parse ASIN: B00DFFT5HG
667Parse ASIN: B00DDMITQ4
668Parse ASIN: B00HB0WIHA
669Parse ASIN: B00HB0WGF4
670Parse ASIN: B00DDMIWIO
671Parse ASIN: B00EKRCCVO
672Parse ASIN: B01EKZO7NG
673Parse ASIN: B00T4JTXQK
674Parse ASIN: B00BCXF7MU
675Parse ASIN: B00WFRT020
676Parse ASIN: B008KJQMA0
677Parse ASIN: B0042RJR74
678Parse ASIN: B005DLCJX2
679Parse ASIN: B01BOGG5KM
680Parse ASIN: B01BOGG502
681Parse ASIN: B0062V8PPI
682Parse ASIN: B00A7NUARS
683Parse ASIN: B01BOGG4I0
684Parse ASIN: B0094DJ3XO
685Parse ASIN: B005FAG6DK
686Parse ASIN: 0312510780
687Parse ASIN: B0043D28B4
688Parse ASIN: 0694003611
689Parse ASIN: B00FEJPCNC
690Parse ASIN: 0399255370
691Parse ASIN: 141694737X
692Parse ASIN: 0671449028
693Parse ASIN: 0399226907
694Parse ASIN: 0805047905
695Parse ASIN: B004Y9AKZI
696Parse ASIN: B00KBGTRAC
697Parse ASIN: B005UV0USQ
698Parse ASIN: B01G5ANDOS
699Parse ASIN: B00AKKDSNG
700Parse ASIN: B001I463G2
701Parse ASIN: B000056C86
702Parse ASIN: B00MCJULWE
703Parse ASIN: B00PTL0S3Y
704Parse ASIN: B00K75MW40
705Parse ASIN: B00H8MSEXS
706Parse ASIN: B006T6CKG6
707Parse ASIN: B00AHVR6TA
708Parse ASIN: B01I5HVYDQ
709Parse ASIN: B019D3SVQO
710Parse ASIN: B005APW7CO
711Parse ASIN: B00YWHYY18
712Parse ASIN: B016XS2SKC
713Parse ASIN: B00AHVR708
714Parse ASIN: B00BZO1PEA
715Parse ASIN: B000LXQVA4
716Parse ASIN: B00Y1QE1FE
717Parse ASIN: B014D4H7C2
718Parse ASIN: B01FHSTUIW
719Parse ASIN: B0042D69V0
720Parse ASIN: B00GRS9XEI
721Parse ASIN: B00JU949AE
722Parse ASIN: B006PB2H4A
723Parse ASIN: B00FNJ7D58
724Parse ASIN: B00NFETGM6
725Parse ASIN: B00BQYVOKY
726Parse ASIN: B00CZFAZGM
727Parse ASIN: B014D4HPXI
728Parse ASIN: B00NEO5UQS
729Parse ASIN: B01AFQKG8Y
730Parse ASIN: B013JTMUX8
731Parse ASIN: B00KHR7TPK
732Parse ASIN: B00PAUF3MU
733Parse ASIN: B00GRS9XFW
734Parse ASIN: B00NFETGSU
735Parse ASIN: B00O2VQZ1Q
736Parse ASIN: B01DYJF5NU
737Parse ASIN: B00AHVR7ZI
738Parse ASIN: B00ISS2L1W
739Parse ASIN: B00OTXUO2S
740Parse ASIN: B01H5VJJXK
741Parse ASIN: B007UYBOJU
742Parse ASIN: B00OLRKI1E
743Parse ASIN: B00Y2863SO
744Parse ASIN: B01BGVLX5M
745Parse ASIN: B00VAS7QS0
746Parse ASIN: B019I6A5P6
747Parse ASIN: B017XRDV5S
748Parse ASIN: B00O0I9JJQ
749Parse ASIN: B0187RK0S4
750Parse ASIN: B00SX7NZNQ
751Parse ASIN: B01BHAI4LS
752Parse ASIN: B00L40QBYE
753Parse ASIN: B00RY9LLS0
754Parse ASIN: B00TMWVV32
755Parse ASIN: B000XT30G4
756Parse ASIN: B00FLXBJ92
757Parse ASIN: B005DOS2EE
758Parse ASIN: B003VNKLIY
759Parse ASIN: B001OC5UNA
760Parse ASIN: B001PYQWXY
761Parse ASIN: B005JN6304
762Parse ASIN: B00DCR5EKE
763Parse ASIN: B0055LV3XW
764Parse ASIN: B0153SP86E
765Parse ASIN: B00CJ2OWUG
766Parse ASIN: B00NC7BTJY
767Parse ASIN: B003AJXY1U
768Parse ASIN: B003ZYKO2W
769Parse ASIN: B0072FRFI6
770Parse ASIN: B00CQ9UUK8
771Parse ASIN: B003AJHDQW
772Parse ASIN: B013RIQUNW
773Parse ASIN: B00C7JW3GQ
774Parse ASIN: B002PEGT9U
775Parse ASIN: B000GPLT68
776Parse ASIN: B00F6N06CS
777Parse ASIN: B001NQHN7S
778Parse ASIN: B000GUGY1S
779Parse ASIN: B008CO80SA
780Parse ASIN: B000FIOB2A
781Parse ASIN: B00J49UTZO
782Parse ASIN: B00000IS6G
783Parse ASIN: B001DRKEBO
784Parse ASIN: B002H6LT4Q
785Parse ASIN: B00GSNF96I
786Parse ASIN: B002ZG7JQA
787Parse ASIN: B00HAZUJLI
788Parse ASIN: B003BT668M
789Parse ASIN: B00O64R8TC
790Parse ASIN: B002MZMDX8
791Parse ASIN: B000IHQXMY
792Parse ASIN: B006Z2BZQU
793Parse ASIN: B00HAZS672
794Parse ASIN: B00GSJROLA
795Parse ASIN: B0012IXXGM
796Parse ASIN: B001UFSEH0
797Parse ASIN: B01GOSGVKY
798Parse ASIN: B00EL3TH7E
799Parse ASIN: B00IP8A1IK
800Parse ASIN: B012GURB7Q
801Parse ASIN: B00QHO2ILM
802Parse ASIN: B00XQ98CYS
803Parse ASIN: B019J2DYVQ
804Parse ASIN: B00GHAGOXO
805Parse ASIN: B00FAYEE0I
806Parse ASIN: B002JACAIY
807Parse ASIN: B01HQR8WS6
808Parse ASIN: B00PG0D2V8
809Parse ASIN: B00NWVWKV6
810Parse ASIN: B00MS2PP1C
811Parse ASIN: B0012IZHGQ
812Parse ASIN: B002I07FB2
813Parse ASIN: B001IA9YTO
814Parse ASIN: B001LONW40
815Parse ASIN: B00EJ5UD18
816Parse ASIN: B002TIU9X4
817Parse ASIN: B009SXIGUQ
818Parse ASIN: B00KUMB99Y
819Parse ASIN: B017OXA20S
820Parse ASIN: B006LKWH72
821Parse ASIN: B008BRVTHW
822Parse ASIN: B00MS28GQI
823Parse ASIN: B0138L3766
824Parse ASIN: B00NEO5UTU
825Parse ASIN: B00DEI6MMU
826Parse ASIN: B0092YYF6A
827Parse ASIN: B01GRVFZ82
828Parse ASIN: B00NFETGMQ
829Parse ASIN: B00HWVTY6G
830Parse ASIN: B014D4HQ28
831Parse ASIN: B002OOWAB2
832Parse ASIN: B00D435ETM
833Parse ASIN: B008VU3A1C
834Parse ASIN: B00BZANPAQ
835Parse ASIN: B00OC8B1IQ
836Parse ASIN: B01AFQK49K
837Parse ASIN: B00Y1QE1FE
838Parse ASIN: B00AJSJC9S
839Parse ASIN: B00NZVLRQW
840Parse ASIN: B00BZAJHH6
841Parse ASIN: B00US63XMS
842Parse ASIN: B00AJSJE6O
843Parse ASIN: B00GNB4HP4
844Parse ASIN: B00I0P7WIU
845Parse ASIN: B00UAIUXK4
846Parse ASIN: B00R4PXGQ4
847Parse ASIN: B00B99R7NY
848Parse ASIN: B00PZZ2YRC
849Parse ASIN: B01BGJSEPQ
850Parse ASIN: B018996Z1Q
851Parse ASIN: B00QC27U94
852Parse ASIN: B01AFQI456
853Parse ASIN: B00HZO7F98
854Parse ASIN: B007R66AS6
855Parse ASIN: B00WO92FE4
856Parse ASIN: B00PAT18T8
857Parse ASIN: B01B3RIRDU
858Parse ASIN: B004N8C0RG
859Parse ASIN: B0186S2ZQY
860Parse ASIN: B01CIUTIJI
861Parse ASIN: B0050P2PMQ
862Parse ASIN: B01E3T8MVW
863Parse ASIN: B014SKOIR8
864Parse ASIN: B00SIM40MG
865Parse ASIN: B00X8SLWJO
866Parse ASIN: B00PAT18T8
867Parse ASIN: B01CPBWWES
868Parse ASIN: B01ARFU7ZA
869Parse ASIN: B0050P2PMQ
870Parse ASIN: B00ZFI8ZEA
871Parse ASIN: B01B3RIRDU
872Parse ASIN: B00AUI39W8
873Parse ASIN: B00NWA5EHO
874Parse ASIN: B00LXBLIKQ
875Parse ASIN: B00SVNPHGA
876Parse ASIN: B00FUGTV18
877Parse ASIN: B01H0RUYLU
878Parse ASIN: B017NZCS0E
879Parse ASIN: B0047T68WE
880Parse ASIN: B0169M0GQ0
881Parse ASIN: B008OT8JWA
882Parse ASIN: B013RTGS1A
883Parse ASIN: B00XJZ6RUK
884Parse ASIN: B00821FLT4
885Parse ASIN: B00HT6E6GW
886Parse ASIN: B01BDQDIGM
887Parse ASIN: B00BBK0M4M
888Parse ASIN: B0169U11QQ
889Parse ASIN: B00BXE67VS
890Parse ASIN: B0053Y2B6E
891Parse ASIN: B00VS48QBM
892Parse ASIN: B0009A4FBQ
893Parse ASIN: B00TYLDEZY
894Parse ASIN: B01BSR9R3Y
895Parse ASIN: B01J4HBH24
896Parse ASIN: B01H5SP0D6
897Parse ASIN: B00PX8PCSO
898Parse ASIN: B01BGVLXAC
899Parse ASIN: B01BNB4D1Q
900Parse ASIN: B01H5QLB7C
901Parse ASIN: B00J9K5K9I
902Parse ASIN: B01JRY00C2
903Parse ASIN: B00B4FWVWU
904Parse ASIN: B009L1VWCO
905Parse ASIN: B004V5BTUA
906Parse ASIN: B01CD21BQY
907Parse ASIN: B00IOVJ6B6
908Parse ASIN: B01CD21BFU
909Parse ASIN: B01A9BA478
910Parse ASIN: B004WTHCO2
911Parse ASIN: B016LE7D44
912Parse ASIN: B004Q3LBTG
913Parse ASIN: B005UJ3332
914Parse ASIN: B0009PAN7Q
915Parse ASIN: B010FJ9JF2
916Parse ASIN: B0154FF8OS
917Parse ASIN: B00A0ID90A
918Parse ASIN: B00NFJICEO
919Parse ASIN: B00F667V3W
920Parse ASIN: B00CSAWJQ8
921Parse ASIN: B0016KV73W
922Parse ASIN: B00NEO5UK4
923Parse ASIN: B01BQLPMPO
924Parse ASIN: B019W8WLRA
925Parse ASIN: B01G1DK2HK
926Parse ASIN: B0006HJDQE
927Parse ASIN: B00WLDP59K
928Parse ASIN: B01BSPDOQM
929Parse ASIN: B01FSSLX22
930Parse ASIN: B019HRGMOO
931Parse ASIN: B01H3Y2YBI
932Parse ASIN: B00WH2P932
933Parse ASIN: B01HV6J6X2
934Parse ASIN: B01AZ20LDI
935Parse ASIN: B006PB2B6O
936Parse ASIN: B00PTL2BE8
937Parse ASIN: B00YWHYWQ0
938Parse ASIN: B00Y3ISN5O
939Parse ASIN: B01CQVNPMU
940Parse ASIN: B00GSNF96I
941Parse ASIN: B00QJT9494
942Parse ASIN: B004YGL65E
943Parse ASIN: B017VNNTPG
944Parse ASIN: B000NZQ010
945Parse ASIN: B009EDSWJA
946Parse ASIN: 0545392551
947(node:18968) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
948
949Not found: 468
950Total products fetched: 468
951[PRODUCT OFFER Not Found] BOB Revolution SE Single Stroller > undefined
952[PRODUCT OFFER Not Found] Britax B-Agile 4 > undefined
953[PRODUCT OFFER Not Found] Baby Trend Expedition Jogger Stroller > undefined
954[PRODUCT OFFER Not Found] Bugaboo Bee 3 > undefined
955[PRODUCT OFFER Not Found] UPPAbaby Vista > undefined
956[PRODUCT OFFER Not Found] BOB Motion > undefined
957[PRODUCT OFFER Not Found] UPPAbaby Cruz > undefined
958[PRODUCT OFFER Not Found] Baby Jogger City Mini Single > undefined
959[PRODUCT OFFER Not Found] Mountain Buggy Swift > undefined
960[PRODUCT OFFER Not Found] City Mini City Select > undefined
961[PRODUCT OFFER Not Found] Summer Infant - 2015 3D Lite Convenience Stroller > undefined
962[PRODUCT OFFER Not Found] UPPAbaby G-Lite > undefined
963[PRODUCT OFFER Not Found] Kolcraft Cloud Plus Umbrella Stroller > undefined
964[PRODUCT OFFER Not Found] Chicco Liteway > undefined
965[PRODUCT OFFER Not Found] Babyzen YOYO Stroller > undefined
966[PRODUCT OFFER Not Found] UPPAbaby - G-Luxe > undefined
967[PRODUCT OFFER Not Found] Mountain Buggy - 2016 Nano Stroller > undefined
968[PRODUCT OFFER Not Found] Maclaren Mark II > undefined
969[PRODUCT OFFER Not Found] GB Pockit Stroller > undefined
970[PRODUCT OFFER Not Found] Joovy® - Groove Ultralight Umbrella > undefined
971[PRODUCT OFFER Not Found] BOB 2016 Revolution SE > undefined
972[PRODUCT OFFER Not Found] BOB 2016 Revolution Flex > undefined
973[PRODUCT OFFER Not Found] Thule Urban Glide > undefined
974[PRODUCT OFFER Not Found] Baby Trend Expedition LX Jogger > undefined
975[PRODUCT OFFER Not Found] Baby Jogger Summit X3 > undefined
976[PRODUCT OFFER Not Found] Mountain Buggy Terrain > undefined
977[PRODUCT OFFER Not Found] BOB Ironman > undefined
978[PRODUCT OFFER Not Found] Joovy Zoom 360 Ultralight > undefined
979[PRODUCT OFFER Not Found] Graco Fastaction Fold Jogger Click Connect > undefined
980[PRODUCT OFFER Not Found] Britax Marathon G4 ClickTight > undefined
981[PRODUCT OFFER Not Found] Chicco NextFit > undefined
982[PRODUCT OFFER Not Found] Graco Nautilus 3-in-1 > undefined
983[PRODUCT OFFER Not Found] Diono Radian RXT > undefined
984[PRODUCT OFFER Not Found] Britax Advocate ClickTight > undefined
985[PRODUCT OFFER Not Found] Peg Perego Primo Viaggio SIP > undefined
986[PRODUCT OFFER Not Found] Graco My Ride 65 LX > undefined
987[PRODUCT OFFER Not Found] Maxi-Cosi Pria 85 > undefined
988[PRODUCT OFFER Not Found] Graco SnugRide Click Connect 35 > undefined
989[PRODUCT OFFER Not Found] Chicco Keyfit 30 Infant Car Seat > undefined
990[PRODUCT OFFER Not Found] Evenflo Embrace LX > undefined
991[PRODUCT OFFER Not Found] Maxi-Cosi Mico Max 30 Infant Car Seat > undefined
992[PRODUCT OFFER Not Found] Britax B-Safe 35 > undefined
993[PRODUCT OFFER Not Found] Peg Perego Primo Viaggio 4-35 > undefined
994[PRODUCT OFFER Not Found] UPPAbaby Mesa > undefined
995[PRODUCT OFFER Not Found] Baby Trend Flex-Loc Infant Car Seat > undefined
996[PRODUCT OFFER Not Found] Graco SnugRide Click Connect 40 > undefined
997[PRODUCT OFFER Not Found] Graco SnugRide 30 Classic Connect > undefined
998[PRODUCT OFFER Not Found] Medela Pump in Style > undefined
999[PRODUCT OFFER Not Found] Lansinoh Affinity > undefined
1000[PRODUCT OFFER Not Found] Spectra Baby USA S1 Hospital Grade > undefined
1001[PRODUCT OFFER Not Found] Medela Freestyle > undefined
1002[PRODUCT OFFER Not Found] Philips Avent Comfort Breast Pump > undefined
1003[PRODUCT OFFER Not Found] Lansinoh Signature Pro Double Electric Breast Pump > undefined
1004[PRODUCT OFFER Not Found] Medela Swing Single Electric > undefined
1005[PRODUCT OFFER Not Found] Evenflo Feeding Advanced Double Pump > undefined
1006[PRODUCT OFFER Not Found] Spectra DEW 350 Hospital Grade > undefined
1007[PRODUCT OFFER Not Found] Ameda Purely Yours > undefined
1008[PRODUCT OFFER Not Found] Tommee Tippee Closer to Nature Bottle > undefined
1009[PRODUCT OFFER Not Found] Comotomo Natural Feel > undefined
1010[PRODUCT OFFER Not Found] Philips AVENT Natural Bottles > undefined
1011[PRODUCT OFFER Not Found] Dr. Brown's Glass Bottles > undefined
1012[PRODUCT OFFER Not Found] Medela Breastmilk Bottle > undefined
1013[PRODUCT OFFER Not Found] Born Free Premium Glass Bottle > undefined
1014[PRODUCT OFFER Not Found] Dr. Brown's BPA Free Natural Flow Wide > undefined
1015[PRODUCT OFFER Not Found] Playtex BPA Free VentAire Bottle > undefined
1016[PRODUCT OFFER Not Found] Munchkin Latch BPA-Free Baby Bottle > undefined
1017[PRODUCT OFFER Not Found] The First Years Breastflow Bottles > undefined
1018[PRODUCT OFFER Not Found] Ergobaby Four Position 360 > undefined
1019[PRODUCT OFFER Not Found] Boba 4G > undefined
1020[PRODUCT OFFER Not Found] LILLEbaby COMPLETE ALL SEASONS 6-in-1 Baby Carrier > undefined
1021[PRODUCT OFFER Not Found] Tula Ergonomic Baby > undefined
1022[PRODUCT OFFER Not Found] Baby K'tan Original Baby Carrier > undefined
1023[PRODUCT OFFER Not Found] Infantino Sash Mei Tai Carrier > undefined
1024[PRODUCT OFFER Not Found] BabyBjorn Original > undefined
1025[PRODUCT OFFER Not Found] BabyBjorn Baby Carrier One > undefined
1026[PRODUCT OFFER Not Found] BabyBjorn Baby Carrier Miracle > undefined
1027[PRODUCT OFFER Not Found] DaVinci Jayden 3-Drawer Changer Dresser > undefined
1028[PRODUCT OFFER Not Found] Delta Children Sweet Beginnings Bassinet > undefined
1029[PRODUCT OFFER Not Found] Infantino Flip Front 2 Back Carrier > undefined
1030[PRODUCT OFFER Not Found] Skip Hop Duo Diaper Bag > undefined
1031[PRODUCT OFFER Not Found] Marc Jacobs Eliz-a-Baby Bag > undefined
1032[PRODUCT OFFER Not Found] Lassig Green Label > undefined
1033[PRODUCT OFFER Not Found] Ju-Ju-Be Be Right Back Backpack > undefined
1034[PRODUCT OFFER Not Found] Babymel Satchel > undefined
1035[PRODUCT OFFER Not Found] Skip Hop Chelsea Downtown Chic > undefined
1036[PRODUCT OFFER Not Found] Petunia Pickle Bottom Satchel > undefined
1037[PRODUCT OFFER Not Found] Ju-Ju-Be Be Prepared Bag > undefined
1038[PRODUCT OFFER Not Found] Storksak Bobby > undefined
1039[PRODUCT OFFER Not Found] BEABA Stockholm > undefined
1040[PRODUCT OFFER Not Found] Infant Optics DXR-8 Video Baby Monitor > undefined
1041[PRODUCT OFFER Not Found] Summer Infant Dual View Digital Color Video Baby Monitor > undefined
1042[PRODUCT OFFER Not Found] Motorola MBP36S Remote Wireless Video Baby Monitor > undefined
1043[PRODUCT OFFER Not Found] VTech VM321-2 Safe & Sound Video Baby Monitor > undefined
1044[PRODUCT OFFER Not Found] Infant Optics DXR-5 Video Baby Monitor > undefined
1045[PRODUCT OFFER Not Found] Hellobaby Security Digital Baby Video Camera > undefined
1046[PRODUCT OFFER Not Found] Summer Infant In View Video Baby Monitor > undefined
1047[PRODUCT OFFER Not Found] Philips Avent Digital Video Baby Monitor > undefined
1048[PRODUCT OFFER Not Found] Samsung BrightVIEW HD > undefined
1049[PRODUCT OFFER Not Found] Levana Ayden 3.5“ Digital Video Baby Monitor > undefined
1050[PRODUCT OFFER Not Found] Baby Jogger City Select Double > undefined
1051[PRODUCT OFFER Not Found] Baby Trend Sit N Stand Ultra > undefined
1052[PRODUCT OFFER Not Found] Baby Jogger City Mini GT Double > undefined
1053[PRODUCT OFFER Not Found] ZOE XL2 DELUXE - Double Xtra Lightweight Stroller > undefined
1054[PRODUCT OFFER Not Found] Britax B-Ready Double > undefined
1055[PRODUCT OFFER Not Found] BOB 2016 Revolution SE Duallie Stroller > undefined
1056[PRODUCT OFFER Not Found] BOB 2016 Revolution Flex Duallie Stroller > undefined
1057[PRODUCT OFFER Not Found] Graco FastAction Fold Duo Click Connect Stroller > undefined
1058[PRODUCT OFFER Not Found] Philips Avent DECT SCD570-10 > undefined
1059[PRODUCT OFFER Not Found] VTech DM221 Safe & Sound Digital > undefined
1060[PRODUCT OFFER Not Found] Summer Infant Babble Band Wearable > undefined
1061[PRODUCT OFFER Not Found] Philips Avent DECT SCD560 > undefined
1062[PRODUCT OFFER Not Found] Angelcare Baby Sound AC420 > undefined
1063[PRODUCT OFFER Not Found] The First Years Crisp and Clear > undefined
1064[PRODUCT OFFER Not Found] VTech DM222 Safe & Sound Digital > undefined
1065[PRODUCT OFFER Not Found] Safety 1st Ultimate DECT Wee Voice > undefined
1066[PRODUCT OFFER Not Found] Graco Secure Coverage Digital > undefined
1067[PRODUCT OFFER Not Found] Sony BabyCall NTM-910 > undefined
1068[PRODUCT OFFER Not Found] Angelcare AC1100 > undefined
1069[PRODUCT OFFER Not Found] Angelcare AC401 > undefined
1070[PRODUCT OFFER Not Found] Snuza Hero SE > undefined
1071[PRODUCT OFFER Not Found] Angelcare AC1300 > undefined
1072[PRODUCT OFFER Not Found] Babysense 5s > undefined
1073[PRODUCT OFFER Not Found] Snuza Go! > undefined
1074[PRODUCT OFFER Not Found] Angelcare AC300 > undefined
1075[PRODUCT OFFER Not Found] MonBaby Smart Baby > undefined
1076[PRODUCT OFFER Not Found] Mimo Smart Baby Monitor > undefined
1077[PRODUCT OFFER Not Found] BOB Revolution SE Single > undefined
1078[PRODUCT OFFER Not Found] Summer Infant 3D Lite Convenience Stroller > undefined
1079[PRODUCT OFFER Not Found] BOB 2016 Revolution PRO Stroller > undefined
1080[PRODUCT OFFER Not Found] Britax 2016 B-Agile Double Stroller > undefined
1081[PRODUCT OFFER Not Found] Baby Trend Expedition Jogger > undefined
1082[PRODUCT OFFER Not Found] ZOE XL2 DELUXE Double Xtra Lightweight Twin Stroller System > undefined
1083[PRODUCT OFFER Not Found] Summer Infant 3D One Convenience Stroller > undefined
1084[PRODUCT OFFER Not Found] Baby Trend Sit N Stand Double Stroller > undefined
1085[PRODUCT OFFER Not Found] Joovy Caboose Stand On Tandem Stroller > undefined
1086[PRODUCT OFFER Not Found] Chicco Bravo Trio Travel System > undefined
1087[PRODUCT OFFER Not Found] Delta Children Infant Changing Table with Pad > undefined
1088[PRODUCT OFFER Not Found] Badger Basket Baby Changing Table > undefined
1089[PRODUCT OFFER Not Found] Delta Children Eclipse Changing Table > undefined
1090[PRODUCT OFFER Not Found] Stork Craft Avalon 6 Drawer Universal Dresser > undefined
1091[PRODUCT OFFER Not Found] Badger Basket Modern Changing Table > undefined
1092[PRODUCT OFFER Not Found] Badger Basket Company Sleigh Style Changing Table > undefined
1093[PRODUCT OFFER Not Found] Dream On Me Emily Changing Table > undefined
1094[PRODUCT OFFER Not Found] Graco Pack N Play Playard Bassinet > undefined
1095[PRODUCT OFFER Not Found] HALO Bassinest Swivel Sleeper Bassinet - Premiere Series > undefined
1096[PRODUCT OFFER Not Found] Kolcraft Cuddle 'N Care 2-in-1 Bassinet and Incline > undefined
1097[PRODUCT OFFER Not Found] Arm's Reach Concepts Co-Sleeper Bassinet Mini Arc > undefined
1098[PRODUCT OFFER Not Found] Contours Classique Wood Bassinet > undefined
1099[PRODUCT OFFER Not Found] Babybjorn Cradle > undefined
1100[PRODUCT OFFER Not Found] Arm's Reach Concepts Clear-Vue Co-Sleeper > undefined
1101[PRODUCT OFFER Not Found] HALO Bassinest Swivel Sleeper Bassinet - Essentia Series > undefined
1102[PRODUCT OFFER Not Found] Arm's Reach Concepts Co-Sleeper Bedside Bassinet > undefined
1103[PRODUCT OFFER Not Found] DaVinci Kalani 4-in-1 Convertible Crib with Toddler Rail > undefined
1104[PRODUCT OFFER Not Found] DaVinci Jayden 4-in-1 Convertible Crib > undefined
1105[PRODUCT OFFER Not Found] babyletto Hudson 3-in-1 Convertible Crib with Toddler Rail > undefined
1106[PRODUCT OFFER Not Found] Babyletto Gelato Crib And Dresser Combo White Feet > undefined
1107[PRODUCT OFFER Not Found] DaVinci Jenny Lind 3-in-1 Convertible Crib > undefined
1108[PRODUCT OFFER Not Found] Union 3-in-1 Convertible Crib > undefined
1109[PRODUCT OFFER Not Found] babyletto Modo 3 in 1 Crib with Toddler Rail > undefined
1110[PRODUCT OFFER Not Found] Fisher-Price My Little Snugapuppy Cradle and Swing > undefined
1111[PRODUCT OFFER Not Found] Fisher-Price Deluxe Take Along Swing > undefined
1112[PRODUCT OFFER Not Found] Graco Glider LX Gliding Swing > undefined
1113[PRODUCT OFFER Not Found] Comfort & Harmony Cozy Kingdom Portable Swing > undefined
1114[PRODUCT OFFER Not Found] Fisher-Price Snugabunny Cradle 'N Swing > undefined
1115[PRODUCT OFFER Not Found] Fisher-Price 4-in-1 Rock 'n Glide Soother > undefined
1116[PRODUCT OFFER Not Found] 4moms - mamaRoo Baby Swing > undefined
1117[PRODUCT OFFER Not Found] Fisher-Price Moonlight Meadow Cradle 'n Swing > undefined
1118[PRODUCT OFFER Not Found] Fisher-Price Papasan Cradle Swing > undefined
1119[PRODUCT OFFER Not Found] Graco DuetSoothe Swing and Rocker > undefined
1120[PRODUCT OFFER Not Found] Joovy Spoon Walker > undefined
1121[PRODUCT OFFER Not Found] Bright Starts Walk-A-Bout Walker > undefined
1122[PRODUCT OFFER Not Found] Disney Minnie Music and Lights Walker > undefined
1123[PRODUCT OFFER Not Found] Baby Einstein Baby Neptune Walker > undefined
1124[PRODUCT OFFER Not Found] Kolcraft Tiny Steps 2-in-1 Activity Walker > undefined
1125[PRODUCT OFFER Not Found] Bright Starts Around We Go 3-in-1 > undefined
1126[PRODUCT OFFER Not Found] Safety 1st Sounds 'n Lights Activity Walker > undefined
1127[PRODUCT OFFER Not Found] Safety 1st Ready, Set, Walk! Walker > undefined
1128[PRODUCT OFFER Not Found] Delta Children Lil' Drive Baby Activity Walker > undefined
1129[PRODUCT OFFER Not Found] Fisher Price Rainforest Jumperoo > undefined
1130[PRODUCT OFFER Not Found] Infant Optics DXR-8 Video Monitor > undefined
1131[PRODUCT OFFER Not Found] Comotomo Baby Bottle > undefined
1132[PRODUCT OFFER Not Found] Summer Infant 2015 3D Lite Convenience Stroller > undefined
1133[PRODUCT OFFER Not Found] The First Years Sure Comfort Deluxe Newborn To Toddler Tub > undefined
1134[PRODUCT OFFER Not Found] Vulli Sophie la Girafe > undefined
1135[PRODUCT OFFER Not Found] Safety 1st Heavenly Dreams White Crib Mattress > undefined
1136[PRODUCT OFFER Not Found] Regalo Easy Step Walk Thru Gate > undefined
1137[PRODUCT OFFER Not Found] Angelcare AC601 Simplicity Movement & Sound Monitor > undefined
1138[PRODUCT OFFER Not Found] Pampers Swaddlers Diapers > undefined
1139[PRODUCT OFFER Not Found] Pampers Cruisers Diapers > undefined
1140[PRODUCT OFFER Not Found] Huggies Overnites Diapers > undefined
1141[PRODUCT OFFER Not Found] Huggies Little Movers Diapers > undefined
1142[PRODUCT OFFER Not Found] Pampers Baby Dry Diapers > undefined
1143[PRODUCT OFFER Not Found] Bambo Nature Premium Baby Diapers > undefined
1144[PRODUCT OFFER Not Found] Luvs Ultra Leakguards Diapers > undefined
1145[PRODUCT OFFER Not Found] Earth's Best Chlorine-Free Diapers > undefined
1146[PRODUCT OFFER Not Found] Huggies Snug and Dry Diapers > undefined
1147[PRODUCT OFFER Not Found] The Honest Company Diapers > undefined
1148[PRODUCT OFFER Not Found] WaterWipes Baby Wipes, Chemical-Free, Sensitive > undefined
1149[PRODUCT OFFER Not Found] Babyganics Face, Hand & Baby Wipes > undefined
1150[PRODUCT OFFER Not Found] Pampers Sensitive Wipes > undefined
1151[PRODUCT OFFER Not Found] Huggies Natural Care Baby Wipes > undefined
1152[PRODUCT OFFER Not Found] Huggies Simply Clean Unscented Soft Baby Wipes > undefined
1153[PRODUCT OFFER Not Found] Pampers Softcare Baby Fresh Wipes > undefined
1154[PRODUCT OFFER Not Found] Seventh Generation Thick & Strong Free and Clear Baby Wipes > undefined
1155[PRODUCT OFFER Not Found] Huggies One & Done Refreshing Baby Wipes > undefined
1156[PRODUCT OFFER Not Found] Pampers Natural Clean Wipes > undefined
1157[PRODUCT OFFER Not Found] Seventh Generation Original Soft and Gentle Free and Clear Baby Wipes > undefined
1158[PRODUCT OFFER Not Found] First 100 Words > undefined
1159[PRODUCT OFFER Not Found] Lamaze Peek-A-Boo Forest Soft Book > undefined
1160[PRODUCT OFFER Not Found] Goodnight Moon > undefined
1161[PRODUCT OFFER Not Found] VTech Rhyme and Discover Book > undefined
1162[PRODUCT OFFER Not Found] The Day the Crayons Quit > undefined
1163[PRODUCT OFFER Not Found] Dear Zoo: A Lift-the-Flap Book > undefined
1164[PRODUCT OFFER Not Found] The Going-To-Bed Book > undefined
1165[PRODUCT OFFER Not Found] The Very Hungry Caterpillar > undefined
1166[PRODUCT OFFER Not Found] Brown Bear, Brown Bear, What Do You See? > undefined
1167[PRODUCT OFFER Not Found] Graco Pack N Play Playard Bassinet with Automatic Folding Feet > undefined
1168[PRODUCT OFFER Not Found] Summer Infant Pop N' Play Portable Playard > undefined
1169[PRODUCT OFFER Not Found] Graco Pack 'n Play Playard Bassinet Changer with Cuddle Cove Rocking Seat > undefined
1170[PRODUCT OFFER Not Found] Graco Pack 'n Play Playard Reversible Napper & Changer > undefined
1171[PRODUCT OFFER Not Found] Lotus Travel Crib and Portable Baby Playard > undefined
1172[PRODUCT OFFER Not Found] Joovy Room2 Portable Playard > undefined
1173[PRODUCT OFFER Not Found] Graco Pack 'N Play Playard Totbloc with Carry Bag > undefined
1174[PRODUCT OFFER Not Found] Fisher-Price Ultra-Lite Day and Night Play Yard > undefined
1175[PRODUCT OFFER Not Found] Graco Pack 'n Play Playard Bassinet Changer Snuggle Suite LX Baby Bouncer > undefined
1176[PRODUCT OFFER Not Found] Graco Pack 'n Play Playard > undefined
1177[PRODUCT OFFER Not Found] Graco Blossom 4 in 1 High Chair Seating System > undefined
1178[PRODUCT OFFER Not Found] Peg Perego Siesta Highchair > undefined
1179[PRODUCT OFFER Not Found] Graco TableFit Highchair > undefined
1180[PRODUCT OFFER Not Found] Abiie Beyond Wooden High Chair with Tray > undefined
1181[PRODUCT OFFER Not Found] Ingenuity Trio 3-in-1 High Chair > undefined
1182[PRODUCT OFFER Not Found] BABYBJORN High Chair > undefined
1183[PRODUCT OFFER Not Found] Chicco Vinyl Polly High Chair > undefined
1184[PRODUCT OFFER Not Found] Fisher-Price 4-in-1 Total Clean High Chair > undefined
1185[PRODUCT OFFER Not Found] Graco DuoDiner LX Highchair > undefined
1186[PRODUCT OFFER Not Found] phil&teds Poppy Highchair > undefined
1187[PRODUCT OFFER Not Found] Fisher-Price Rainforest Jumperoo > undefined
1188[PRODUCT OFFER Not Found] Oribel PortaPlay Activity Center > undefined
1189[PRODUCT OFFER Not Found] Fisher-Price Jumperoo > undefined
1190[PRODUCT OFFER Not Found] Summer Infant Pop N' Jump Portable Activity Seat > undefined
1191[PRODUCT OFFER Not Found] Fisher-Price Luv U Zoo Jumperoo > undefined
1192[PRODUCT OFFER Not Found] Sassy Inspire The Senses Bounce Around Activity Center > undefined
1193[PRODUCT OFFER Not Found] Baby Einstein Activity Jumper Special Edition > undefined
1194[PRODUCT OFFER Not Found] Evenflo ExerSaucer Jump and Learn Jumper > undefined
1195[PRODUCT OFFER Not Found] Bright Starts Springin' Safari Bounce-a-Bout Activity Center > undefined
1196[PRODUCT OFFER Not Found] Fisher-Price Space Saver Jumperoo > undefined
1197[PRODUCT OFFER Not Found] BabyBjorn Bouncer Balance Soft > undefined
1198[PRODUCT OFFER Not Found] Fisher-Price My Little Snugapuppy Deluxe Bouncer > undefined
1199[PRODUCT OFFER Not Found] Fisher-Price Baby's Bouncer > undefined
1200[PRODUCT OFFER Not Found] Fisher-Price Comfort Curve Bouncer > undefined
1201[PRODUCT OFFER Not Found] Ingenuity InReach Mobile Lounger and Bouncer > undefined
1202[PRODUCT OFFER Not Found] Bright Starts Jungle Stream Bouncer > undefined
1203[PRODUCT OFFER Not Found] Bright Starts Playful Pinwheels Bouncer > undefined
1204[PRODUCT OFFER Not Found] Bright Starts Safari Smiles Bouncer > undefined
1205[PRODUCT OFFER Not Found] Sassy Cuddle Bug Bouncer > undefined
1206[PRODUCT OFFER Not Found] Fisher-Price Moonlight Meadow Deluxe Bouncer > undefined
1207[PRODUCT OFFER Not Found] Britax Parkway SGL G1.1 Belt-Positioning Booster > undefined
1208[PRODUCT OFFER Not Found] Chicco KidFit 2-in-1 Belt Positioning Booster > undefined
1209[PRODUCT OFFER Not Found] Graco Affix Youth Booster Seat with Latch System > undefined
1210[PRODUCT OFFER Not Found] Evenflo Maestro Booster Car Seat > undefined
1211[PRODUCT OFFER Not Found] Britax Frontier Clicktight Combination Harness-2-Booster Car Seat > undefined
1212[PRODUCT OFFER Not Found] mifold Grab-and-Go Car Booster Seat > undefined
1213[PRODUCT OFFER Not Found] Graco Backless TurboBooster Car Seat > undefined
1214[PRODUCT OFFER Not Found] Britax Pinnacle G1.1 ClickTight Harness-2-Booster Car Seat > undefined
1215[PRODUCT OFFER Not Found] Graco Nautilus 65 3-in-1 Harness Booster > undefined
1216[PRODUCT OFFER Not Found] Graco TurboBooster LX Car Seat > undefined
1217[PRODUCT OFFER Not Found] Baby Relax Mikayla Upholstered Swivel Gliding Recliner > undefined
1218[PRODUCT OFFER Not Found] DaVinci Olive Upholstered Swivel Glider with Bonus Ottoman > undefined
1219[PRODUCT OFFER Not Found] Windsor Glider and Ottoman > undefined
1220[PRODUCT OFFER Not Found] Baby Relax The Mackenzie Microfiber Plush Nursery Rocker Chair > undefined
1221[PRODUCT OFFER Not Found] Angel Line Monterey Glider & Ottoman > undefined
1222[PRODUCT OFFER Not Found] Pulaski Harmony Swivel Glider > undefined
1223[PRODUCT OFFER Not Found] 2xhome Modern Upholstered Eames Style Armchair > undefined
1224[PRODUCT OFFER Not Found] Stork Craft Custom Hoop Glider and Ottoman > undefined
1225[PRODUCT OFFER Not Found] Naomi Home Brisbane Glider & Ottoman Set > undefined
1226[PRODUCT OFFER Not Found] Beige Bowback Glider Rocker Chair with Ottoman > undefined
1227[PRODUCT OFFER Not Found] Summer Infant Multi-Use Deco Extra Tall Walk-Thru Gate > undefined
1228[PRODUCT OFFER Not Found] Summer Infant Metal Expansion Gate, 6 Foot Wide Extra Tall Walk-Thru > undefined
1229[PRODUCT OFFER Not Found] North States Supergate Deluxe Décor Metal Gate > undefined
1230[PRODUCT OFFER Not Found] Regalo 192-Inch Super Wide Gate and Play Yard > undefined
1231[PRODUCT OFFER Not Found] Regalo Easy Step Extra Tall Walk Thru Gate > undefined
1232[PRODUCT OFFER Not Found] Safety 1st Nature Next Bamboo Gate > undefined
1233[PRODUCT OFFER Not Found] North States Supergate Easy Swing and Lock Metal Gate > undefined
1234[PRODUCT OFFER Not Found] Munchkin Easy-Close Metal Safety Gate > undefined
1235[PRODUCT OFFER Not Found] Evenflo Position and Lock Tall Pressure Mount Wood Gate > undefined
1236[PRODUCT OFFER Not Found] Nora's Nursery Baby Cloth Pocket or Cover Diapers with 7 Bamboo Inserts > undefined
1237[PRODUCT OFFER Not Found] LBB Reusable Baby Cloth Pocket Diapers > undefined
1238[PRODUCT OFFER Not Found] BumGenius 4.0 > undefined
1239[PRODUCT OFFER Not Found] Thirsties Duo Wrap Snap > undefined
1240[PRODUCT OFFER Not Found] gDiapers gPants > undefined
1241[PRODUCT OFFER Not Found] BumGenius Freetime All in One Cloth Diaper > undefined
1242[PRODUCT OFFER Not Found] Rumparooz One Size Cloth Diaper Cover Snap > undefined
1243[PRODUCT OFFER Not Found] OsoCozy - Prefolds Unbleached Cloth Diapers > undefined
1244[PRODUCT OFFER Not Found] GroVia Hybrid Snap Shell Diaper > undefined
1245[PRODUCT OFFER Not Found] Alva Baby Pocket Cloth Diaper > undefined
1246[PRODUCT OFFER Not Found] Peg Perego John Deere Ground Force Tractor with Trailer > undefined
1247[PRODUCT OFFER Not Found] Schylling Silver Racecar Metal Speedster > undefined
1248[PRODUCT OFFER Not Found] Power Wheels Thomas the Train Thomas with Track > undefined
1249[PRODUCT OFFER Not Found] Little Tikes Cozy Coupe 30th Anniversary Car > undefined
1250[PRODUCT OFFER Not Found] PlasmaCar Ride On Toy > undefined
1251[PRODUCT OFFER Not Found] Step2 Whisper Ride II > undefined
1252[PRODUCT OFFER Not Found] Radio Flyer Scoot-About > undefined
1253[PRODUCT OFFER Not Found] Fisher-Price 3-in-1 Bounce > undefined
1254[PRODUCT OFFER Not Found] Radio Flyer Classic Red Wagon > undefined
1255[PRODUCT OFFER Not Found] Little Tikes Go and Grow Lil' Rollin' Giraffe Ride-on > undefined
1256[PRODUCT OFFER Not Found] DaVinci Alpha Mini Rocking Crib > undefined
1257[PRODUCT OFFER Not Found] Dream On Me Casco 3 in 1 Mini Crib and Changing Table Combo > undefined
1258[PRODUCT OFFER Not Found] DaVinci Kalani 2-in-1 Mini Crib and Twin Bed > undefined
1259[PRODUCT OFFER Not Found] Graco Travel Lite Crib with Stages > undefined
1260[PRODUCT OFFER Not Found] Bloom Alma Mini Urban Mini Folding Crib > undefined
1261[PRODUCT OFFER Not Found] Dream On Me Addison 4 in 1 Convertible Mini Crib > undefined
1262[PRODUCT OFFER Not Found] Delta Children Portable Mini Crib > undefined
1263[PRODUCT OFFER Not Found] DaVinci Annabelle 2-in-1 Mini Crib and Twin Bed > undefined
1264[PRODUCT OFFER Not Found] Dream On Me 3 in 1 Aden Convertible Mini Crib > undefined
1265[PRODUCT OFFER Not Found] babyletto Origami Mini Crib > undefined
1266[PRODUCT OFFER Not Found] Lambs & Ivy Crib 4 Piece Bedding Set > undefined
1267[PRODUCT OFFER Not Found] SoHo Froggies Party Baby Crib Nursery Bedding Set 13 pcs > undefined
1268[PRODUCT OFFER Not Found] SoHo Gold Fish Aquarium Baby Crib Bedding Set 13 pcs > undefined
1269[PRODUCT OFFER Not Found] Sweet Jojo Designs Turquoise Blue Gray and White Mod Elephant 11 Piece Crib Set > undefined
1270[PRODUCT OFFER Not Found] Dream On Me 3 Piece Crib Bedding Set > undefined
1271[PRODUCT OFFER Not Found] BreathableBaby Safety Crib 3 Piece Bedding Set > undefined
1272[PRODUCT OFFER Not Found] Disney Finding Nemo Day At the Sea 3 Piece Crib Bedding Set > undefined
1273[PRODUCT OFFER Not Found] Trend Lab Ombre Gray 3 Piece Crib Bedding Set > undefined
1274[PRODUCT OFFER Not Found] Sweet Jojo Designs Outdoor Adventure Nature Fox Bear Animals 9 Piece Set > undefined
1275[PRODUCT OFFER Not Found] Sweet Jojo Designs Chevron Zig Zag Gender Neutral Baby Bedding 4 Piece Set > undefined
1276[PRODUCT OFFER Not Found] Bedtime Originals 3 Piece Crib Bedding Set > undefined
1277[PRODUCT OFFER Not Found] Chevron Zig Zag Pink and Gray 5 Piece Baby Crib Bedding Set with Bumper > undefined
1278[PRODUCT OFFER Not Found] GEENNY Boutique 13 Piece Crib Bedding Set > undefined
1279[PRODUCT OFFER Not Found] Grey Elephant and Chevron Patchwork 4 Piece Crib Bedding Set with Purple Trim > undefined
1280[PRODUCT OFFER Not Found] Bedtime Originals Lavender Woods 3 Piece Bedding Set > undefined
1281[PRODUCT OFFER Not Found] Summer Infant 4 Piece Classic Bedding Set with Adjustable Crib Skirt > undefined
1282[PRODUCT OFFER Not Found] SoHo Lavender Owls Party Baby Crib Nursery Bedding Set 14 pcs > undefined
1283[PRODUCT OFFER Not Found] SoHo Lavender Flower Garden Baby Crib Nursery Bedding Set 13 pcs > undefined
1284[PRODUCT OFFER Not Found] SoHo Pink Camo Baby Crib Nursery Bedding Set 13 pcs > undefined
1285[PRODUCT OFFER Not Found] SoHo Pink Minky Dot Chenille Baby Crib Nursery Bedding Set 13 pcs > undefined
1286[PRODUCT OFFER Not Found] GEENNY Boy Sailor 13 Piece Baby Nursery Crib Bedding Set > undefined
1287[PRODUCT OFFER Not Found] Trend Lab Northwoods 3 Piece Crib Bedding Set > undefined
1288[PRODUCT OFFER Not Found] GEENNY Boutique 13 Piece Crib Bedding Set - Boys > undefined
1289[PRODUCT OFFER Not Found] Bedtime Originals Jungle Buddies 3 Piece Crib Bedding Set > undefined
1290[PRODUCT OFFER Not Found] Bacati Elephants Blue/Grey 10 pc crib set including Bumper Pad > undefined
1291[PRODUCT OFFER Not Found] Bedtime Originals Mod Monkey 3 Piece Bedding Set > undefined
1292[PRODUCT OFFER Not Found] Bedtime Originals Honey Bear 3 Piece Crib Bedding Set > undefined
1293[PRODUCT OFFER Not Found] Little Bedding by NoJo 3 Little Monkeys 10 Piece Crib Bedding Set > undefined
1294[PRODUCT OFFER Not Found] SoHo Dinosaur Baby Crib Nursery Bedding Set 14 pcs > undefined
1295[PRODUCT OFFER Not Found] Bacati Elephants 10 Piece Crib Set with Bumper Pad > undefined
1296[PRODUCT OFFER Not Found] Fisher-Price Newborn Auto Rock 'n Play Sleeper > undefined
1297[PRODUCT OFFER Not Found] Fisher-Price My Little Snugapuppy Deluxe Newborn Rock N Play Sleeper > undefined
1298[PRODUCT OFFER Not Found] Fisher-Price Infant To Toddler Rocker > undefined
1299[PRODUCT OFFER Not Found] Bright Starts 2-in-1 Toucan Tango Rock and Swing > undefined
1300[PRODUCT OFFER Not Found] Fisher-Price Moonlight Meadow Deluxe Newborn Rock 'n Play Sleeper > undefined
1301[PRODUCT OFFER Not Found] Fisher-Price Newborn Rock 'n Play Sleeper > undefined
1302[PRODUCT OFFER Not Found] Fisher-Price Infant-to-Toddler Rocker > undefined
1303[PRODUCT OFFER Not Found] Fisher-Price Newborn-to-Toddler Portable Rocker > undefined
1304[PRODUCT OFFER Not Found] Graco Little Lounger Rocking Seat Plus Vibrating Lounger > undefined
1305[PRODUCT OFFER Not Found] Tiny Love 3 in 1 Rocker Napper > undefined
1306[PRODUCT OFFER Not Found] Fisher-Price Little Superstar Step N' Play Piano > undefined
1307[PRODUCT OFFER Not Found] Bright Starts Around We Go 3-in-1 Activity Center Zippity Zoo > undefined
1308[PRODUCT OFFER Not Found] Bright Starts 2-in-1 Silly Sunburst Activity Gym and Saucer > undefined
1309[PRODUCT OFFER Not Found] Oribel Porta-Play Activity Center > undefined
1310[PRODUCT OFFER Not Found] Evenflo Exersaucer Bounce & Learn > undefined
1311[PRODUCT OFFER Not Found] Baby Einstein Rhythm of The Reef Activity Saucer > undefined
1312[PRODUCT OFFER Not Found] Evenflo - ExerSaucer Activity Center > undefined
1313[PRODUCT OFFER Not Found] Evenflo ExerSaucer World Explorer Triple Fun Saucer > undefined
1314[PRODUCT OFFER Not Found] Evenflo Exersaucer Triple Fun Active Learning Center > undefined
1315[PRODUCT OFFER Not Found] Evenflo ExerSaucer Double Fun Saucer > undefined
1316[PRODUCT OFFER Not Found] Ju-Ju-Be Legacy Collection B.F.F. Convertible Diaper Bag > undefined
1317[PRODUCT OFFER Not Found] Ju-Ju-Be Legacy Nautical Collection Be Right Back Backpack Diaper Bag > undefined
1318[PRODUCT OFFER Not Found] Skip Hop Forma Backpack > undefined
1319[PRODUCT OFFER Not Found] Ju-Ju-Be Be Right Back Backpack Diaper Bag > undefined
1320[PRODUCT OFFER Not Found] Lassig Vintage Style Diaper Backpack Bag > undefined
1321[PRODUCT OFFER Not Found] Petunia Pickle Bottom Boxy Backpack > undefined
1322[PRODUCT OFFER Not Found] Skip Hop Chelsea Downtown Chic Diaper Backpack > undefined
1323[PRODUCT OFFER Not Found] JJ Cole Backpack Diaper Bag > undefined
1324[PRODUCT OFFER Not Found] Skip Hop Duo Diaper Backpack > undefined
1325[PRODUCT OFFER Not Found] Graco Gotham Smart Organizer System Back Pack Diaper Bag > undefined
1326[PRODUCT OFFER Not Found] Skip Hop Zoo Pack Little Kid Backpack - Dino > undefined
1327[PRODUCT OFFER Not Found] Yodo Upgraded Playful Kids Insulated Lunch Boxes Carry Bag > undefined
1328[PRODUCT OFFER Not Found] JanSport Superbreak Backpack - Boys > undefined
1329[PRODUCT OFFER Not Found] Herschel Supply Co. Settlement Backpack - Boys > undefined
1330[PRODUCT OFFER Not Found] Olive Kids Trains, Planes and Trucks Pack 'n Snack > undefined
1331[PRODUCT OFFER Not Found] Coavas Kids Backpack Funny Dinosaur Preschool Book Bag > undefined
1332[PRODUCT OFFER Not Found] Pokemon Boys' Allover Print 17 Inch Backpack > undefined
1333[PRODUCT OFFER Not Found] Obersee Kid's All-in-One Pre-School Backpacks with Integrated Cooler - Boys > undefined
1334[PRODUCT OFFER Not Found] Hynes Eagle Chic School Backpack > undefined
1335[PRODUCT OFFER Not Found] Coolwoo Kid Backpack > undefined
1336[PRODUCT OFFER Not Found] Skip Hop Zoo Little Kid Backpack - Unicorn > undefined
1337[PRODUCT OFFER Not Found] Skip Hop Zoo Backpack, Lunchie, and Bottle Set > undefined
1338[PRODUCT OFFER Not Found] JanSport Superbreak Backpack - Girls > undefined
1339[PRODUCT OFFER Not Found] SLL Kids Small Backpack Girls > undefined
1340[PRODUCT OFFER Not Found] NOHOO Toddler Kids Cute Cartoon Backpack Animal Shaped Shoulder Book Bag > undefined
1341[PRODUCT OFFER Not Found] Obersee Kid's All-in-One Pre-School Backpacks with Integrated Cooler - Girls > undefined
1342[PRODUCT OFFER Not Found] Artone Canvas Tribal Stripes Travel Daypack Campus Backpack With Interior Pockets > undefined
1343[PRODUCT OFFER Not Found] Herschel Supply Co. Settlement Backpack - Girls > undefined
1344[PRODUCT OFFER Not Found] JanSport Overexposed Backpack > undefined
1345[PRODUCT OFFER Not Found] Moolecole Leather & Canvas Backpack School Bag Laptop Bag with Cat's Ears Design > undefined
1346[PRODUCT OFFER Not Found] Bugaboo Storksak Diaper Bag > undefined
1347[PRODUCT OFFER Not Found] Oemi Leather Diaper Bag > undefined
1348[PRODUCT OFFER Not Found] Kate Spade Honey Baby Bag Kennedy Park > undefined
1349[PRODUCT OFFER Not Found] Marc By Marc Jacobs Core Pretty Elizababy Shoulder Bag > undefined
1350[PRODUCT OFFER Not Found] Michael Kors Jet Set Large Nylon Pocket Baby Diaper Bag > undefined
1351[PRODUCT OFFER Not Found] Storksak Elizabeth Leather Diaper Bag > undefined
1352[PRODUCT OFFER Not Found] Kate Spade Taden Baby Bag Blake Avenue > undefined
1353[PRODUCT OFFER Not Found] Rebecca Minkoff Knocked Up Diaper Handbag > undefined
1354[PRODUCT OFFER Not Found] Tory Burch Quilted Nylon Baby Bag > undefined
1355[PRODUCT OFFER Not Found] Coach Signature Multifunction Tote and Baby Diaper Bag > undefined
1356[PRODUCT OFFER Not Found] Ubbi Steel Diaper Pail > undefined
1357[PRODUCT OFFER Not Found] Playtex Genie Elite Pail System Diaper with Odor Lock Carbon Filter > undefined
1358[PRODUCT OFFER Not Found] Munchkin Step Diaper Pail Powered by Arm & Hammer > undefined
1359[PRODUCT OFFER Not Found] Diaper Dekor Plus Pail > undefined
1360[PRODUCT OFFER Not Found] Playtex Diaper Genie Complete Diaper Pail > undefined
1361[PRODUCT OFFER Not Found] Diaper Genie Essentials Diaper Disposal Pail > undefined
1362[PRODUCT OFFER Not Found] Busch Systems - Odorless Cloth Diaper Pail > undefined
1363[PRODUCT OFFER Not Found] Baby Trend Diaper Champ Deluxe > undefined
1364[PRODUCT OFFER Not Found] Safety 1st Easy Saver Diaper Pail > undefined
1365[PRODUCT OFFER Not Found] Tommee Tippee Simplee Diaper Pail > undefined
1366[PRODUCT OFFER Not Found] Britax 2016 B-Agile/B-Safe 35 Travel System > undefined
1367[PRODUCT OFFER Not Found] UPPAbaby Cruz Travel System > undefined
1368[PRODUCT OFFER Not Found] Chicco Viaro Stroller Travel System > undefined
1369[PRODUCT OFFER Not Found] Graco Aire3 Click Connect Travel System > undefined
1370[PRODUCT OFFER Not Found] Graco FastAction Jogger Travel System > undefined
1371[PRODUCT OFFER Not Found] Eddie Bauer TriTreck Travel System > undefined
1372[PRODUCT OFFER Not Found] GB Evoq 4-In-1 Travel System > undefined
1373[PRODUCT OFFER Not Found] Urbini - Modern Lightweight Compact Travel System > undefined
1374[PRODUCT OFFER Not Found] Safety 1st Smooth Ride Travel System with onBoard 35 Infant Car Seat > undefined
1375[PRODUCT OFFER Not Found] BEABA Babycook Pro > undefined
1376[PRODUCT OFFER Not Found] Conair Cuisinart BFM-1000 Baby Food Maker and Bottle Warmer > undefined
1377[PRODUCT OFFER Not Found] Magic Bullet Baby Bullet Baby Care System > undefined
1378[PRODUCT OFFER Not Found] BEABA Babycook Plus > undefined
1379[PRODUCT OFFER Not Found] Sage Spoonfuls Glass Homemade Essentials Package > undefined
1380[PRODUCT OFFER Not Found] BEABA Babycook > undefined
1381[PRODUCT OFFER Not Found] Babymoov Baby Food Maker Nutribaby Zen > undefined
1382[PRODUCT OFFER Not Found] BEABA Original Babycook > undefined
1383[PRODUCT OFFER Not Found] Lil' Jumbl - Versatile Baby Food Maker > undefined
1384[PRODUCT OFFER Not Found] Baby Brezza One Step Baby Food Maker > undefined
1385[PRODUCT OFFER Not Found] BABYBJORN Potty Chair > undefined
1386[PRODUCT OFFER Not Found] BABYBJORN Toilet Trainer > undefined
1387[PRODUCT OFFER Not Found] Ubbi 3-in-1 Potty or Toilet Trainer and Step Stool > undefined
1388[PRODUCT OFFER Not Found] Summer Infant My Size Potty > undefined
1389[PRODUCT OFFER Not Found] Summer Infant Lil' Loo Potty > undefined
1390[PRODUCT OFFER Not Found] OXO Tot 2-in-1 Go Potty for Travel > undefined
1391[PRODUCT OFFER Not Found] Summer Infant Step by Step Potty > undefined
1392[PRODUCT OFFER Not Found] Fisher-Price Learn-to-Flush Potty > undefined
1393[PRODUCT OFFER Not Found] 2-in-1 Potette Plus > undefined
1394[PRODUCT OFFER Not Found] Fisher-Price Custom Comfort Potty Training Seat > undefined
1395[PRODUCT OFFER Not Found] BOB - 2016 Revolution FLEX Duallie Stroller > undefined
1396[PRODUCT OFFER Not Found] Baby Jogger 2016 Summit X3 Double > undefined
1397[PRODUCT OFFER Not Found] Thule Urban Glide Sport Stroller > undefined
1398[PRODUCT OFFER Not Found] South Shore Savannah Collection Changing Table > undefined
1399[PRODUCT OFFER Not Found] South Shore Cotton Candy Changing Table > undefined
1400[PRODUCT OFFER Not Found] BOB 2016 Revolution PRO Duallie Stroller > undefined
1401[PRODUCT OFFER Not Found] BOB Ironman Duallie Double Stroller > undefined
1402[PRODUCT OFFER Not Found] phil&teds Sport Buggy Stroller with Double Kit V5 > undefined
1403[PRODUCT OFFER Not Found] phil&teds S4 Inline Stroller > undefined
1404[PRODUCT OFFER Not Found] Thule Cougar Two-Child Carrier > undefined
1405[PRODUCT OFFER Not Found] Confidence 2-in-1 Double Baby/Child/Kids Bicycle Bike Trailer /Jogger > undefined
1406[PRODUCT OFFER Not Found] Baby Trend Navigator Double Jogger Stroller > undefined
1407[PRODUCT OFFER Not Found] Evenflo Tribute LX Convertible Car Seat > undefined
1408[PRODUCT OFFER Not Found] Graco Contender 65 Convertible Car Seat > undefined
1409[PRODUCT OFFER Not Found] Chicco Activ3 Jogging Stroller > undefined
1410[PRODUCT OFFER Not Found] Contours Options Elite > undefined
1411[PRODUCT OFFER Not Found] Britax B-Agile Double Stroller > undefined
1412[PRODUCT OFFER Not Found] Dream On Me Casco 3 in 1 Mini Crib and Dressing Table Combo > undefined
1413[PRODUCT OFFER Not Found] Fisher-Price Newbury 4-in-1 Convertible Crib > undefined
1414[PRODUCT OFFER Not Found] Stork Craft Portofino 4-in-1 Fixed Side Convert > undefined
1415[PRODUCT OFFER Not Found] Safety 1st Ready-Set-Walk Walker > undefined
1416[PRODUCT OFFER Not Found] VTech Sit-to-Stand Learning Walker > undefined
1417[PRODUCT OFFER Not Found] Summer Infant Contoured Changing Pad > undefined
1418[PRODUCT OFFER Not Found] Giraffes Can't Dance > undefined
1419 For DB: localhost/stage_api_tinywise
1420Going to send email reports... IncomingMessage {
1421 _readableState:
1422 ReadableState {
1423 objectMode: false,
1424 highWaterMark: 16384,
1425 buffer: BufferList { head: null, tail: null, length: 0 },
1426 length: 0,
1427 pipes: null,
1428 pipesCount: 0,
1429 flowing: true,
1430 ended: true,
1431 endEmitted: true,
1432 reading: false,
1433 sync: true,
1434 needReadable: false,
1435 emittedReadable: false,
1436 readableListening: false,
1437 resumeScheduled: false,
1438 defaultEncoding: 'utf8',
1439 ranOut: false,
1440 awaitDrain: 0,
1441 readingMore: false,
1442 decoder: null,
1443 encoding: null },
1444 readable: false,
1445 domain: null,
1446 _events:
1447 { end: [ [Function: responseOnEnd], [Function], [Function], [Function] ],
1448 close: [ [Function], [Function] ],
1449 data: [Function],
1450 error: [Function] },
1451 _eventsCount: 4,
1452 _maxListeners: undefined,
1453 socket:
1454 Socket {
1455 connecting: false,
1456 _hadError: false,
1457 _handle: null,
1458 _parent: null,
1459 _host: 'notification.treadquants.com',
1460 _readableState:
1461 ReadableState {
1462 objectMode: false,
1463 highWaterMark: 16384,
1464 buffer: [Object],
1465 length: 0,
1466 pipes: null,
1467 pipesCount: 0,
1468 flowing: true,
1469 ended: false,
1470 endEmitted: false,
1471 reading: true,
1472 sync: false,
1473 needReadable: true,
1474 emittedReadable: false,
1475 readableListening: false,
1476 resumeScheduled: false,
1477 defaultEncoding: 'utf8',
1478 ranOut: false,
1479 awaitDrain: 0,
1480 readingMore: false,
1481 decoder: null,
1482 encoding: null },
1483 readable: false,
1484 domain: null,
1485 _events:
1486 { end: [Object],
1487 finish: [Function: onSocketFinish],
1488 _socketEnd: [Function: onSocketEnd],
1489 free: [Function: onFree],
1490 close: [Object],
1491 agentRemove: [Function: onRemove],
1492 drain: [Function: ondrain],
1493 error: [Function: socketErrorListener] },
1494 _eventsCount: 8,
1495 _maxListeners: undefined,
1496 _writableState:
1497 WritableState {
1498 objectMode: false,
1499 highWaterMark: 16384,
1500 needDrain: false,
1501 ending: true,
1502 ended: true,
1503 finished: true,
1504 decodeStrings: false,
1505 defaultEncoding: 'utf8',
1506 length: 0,
1507 writing: false,
1508 corked: 0,
1509 sync: false,
1510 bufferProcessing: false,
1511 onwrite: [Function],
1512 writecb: null,
1513 writelen: 0,
1514 bufferedRequest: null,
1515 lastBufferedRequest: null,
1516 pendingcb: 0,
1517 prefinished: true,
1518 errorEmitted: false,
1519 bufferedRequestCount: 0,
1520 corkedRequestsFree: [Object] },
1521 writable: false,
1522 allowHalfOpen: false,
1523 destroyed: true,
1524 _bytesDispatched: 86,
1525 _sockname: null,
1526 _pendingData: null,
1527 _pendingEncoding: '',
1528 server: null,
1529 _server: null,
1530 parser: null,
1531 _httpMessage:
1532 ClientRequest {
1533 domain: null,
1534 _events: [Object],
1535 _eventsCount: 5,
1536 _maxListeners: undefined,
1537 output: [],
1538 outputEncodings: [],
1539 outputCallbacks: [],
1540 outputSize: 0,
1541 writable: true,
1542 _last: true,
1543 chunkedEncoding: false,
1544 shouldKeepAlive: false,
1545 useChunkedEncodingByDefault: false,
1546 sendDate: false,
1547 _removedHeader: {},
1548 _contentLength: 0,
1549 _hasBody: true,
1550 _trailer: '',
1551 finished: true,
1552 _headerSent: true,
1553 socket: [Circular],
1554 connection: [Circular],
1555 _header: 'GET /init/settings HTTP/1.1\r\nhost: notification.treadquants.com\r\nConnection: close\r\n\r\n',
1556 _headers: [Object],
1557 _headerNames: [Object],
1558 _onPendingData: null,
1559 agent: [Object],
1560 socketPath: undefined,
1561 method: 'GET',
1562 path: '/init/settings',
1563 _ended: true,
1564 parser: null,
1565 res: [Circular] },
1566 read: [Function],
1567 _consuming: true,
1568 _idleNext: null,
1569 _idlePrev: null,
1570 _idleTimeout: -1 },
1571 connection:
1572 Socket {
1573 connecting: false,
1574 _hadError: false,
1575 _handle: null,
1576 _parent: null,
1577 _host: 'notification.treadquants.com',
1578 _readableState:
1579 ReadableState {
1580 objectMode: false,
1581 highWaterMark: 16384,
1582 buffer: [Object],
1583 length: 0,
1584 pipes: null,
1585 pipesCount: 0,
1586 flowing: true,
1587 ended: false,
1588 endEmitted: false,
1589 reading: true,
1590 sync: false,
1591 needReadable: true,
1592 emittedReadable: false,
1593 readableListening: false,
1594 resumeScheduled: false,
1595 defaultEncoding: 'utf8',
1596 ranOut: false,
1597 awaitDrain: 0,
1598 readingMore: false,
1599 decoder: null,
1600 encoding: null },
1601 readable: false,
1602 domain: null,
1603 _events:
1604 { end: [Object],
1605 finish: [Function: onSocketFinish],
1606 _socketEnd: [Function: onSocketEnd],
1607 free: [Function: onFree],
1608 close: [Object],
1609 agentRemove: [Function: onRemove],
1610 drain: [Function: ondrain],
1611 error: [Function: socketErrorListener] },
1612 _eventsCount: 8,
1613 _maxListeners: undefined,
1614 _writableState:
1615 WritableState {
1616 objectMode: false,
1617 highWaterMark: 16384,
1618 needDrain: false,
1619 ending: true,
1620 ended: true,
1621 finished: true,
1622 decodeStrings: false,
1623 defaultEncoding: 'utf8',
1624 length: 0,
1625 writing: false,
1626 corked: 0,
1627 sync: false,
1628 bufferProcessing: false,
1629 onwrite: [Function],
1630 writecb: null,
1631 writelen: 0,
1632 bufferedRequest: null,
1633 lastBufferedRequest: null,
1634 pendingcb: 0,
1635 prefinished: true,
1636 errorEmitted: false,
1637 bufferedRequestCount: 0,
1638 corkedRequestsFree: [Object] },
1639 writable: false,
1640 allowHalfOpen: false,
1641 destroyed: true,
1642 _bytesDispatched: 86,
1643 _sockname: null,
1644 _pendingData: null,
1645 _pendingEncoding: '',
1646 server: null,
1647 _server: null,
1648 parser: null,
1649 _httpMessage:
1650 ClientRequest {
1651 domain: null,
1652 _events: [Object],
1653 _eventsCount: 5,
1654 _maxListeners: undefined,
1655 output: [],
1656 outputEncodings: [],
1657 outputCallbacks: [],
1658 outputSize: 0,
1659 writable: true,
1660 _last: true,
1661 chunkedEncoding: false,
1662 shouldKeepAlive: false,
1663 useChunkedEncodingByDefault: false,
1664 sendDate: false,
1665 _removedHeader: {},
1666 _contentLength: 0,
1667 _hasBody: true,
1668 _trailer: '',
1669 finished: true,
1670 _headerSent: true,
1671 socket: [Circular],
1672 connection: [Circular],
1673 _header: 'GET /init/settings HTTP/1.1\r\nhost: notification.treadquants.com\r\nConnection: close\r\n\r\n',
1674 _headers: [Object],
1675 _headerNames: [Object],
1676 _onPendingData: null,
1677 agent: [Object],
1678 socketPath: undefined,
1679 method: 'GET',
1680 path: '/init/settings',
1681 _ended: true,
1682 parser: null,
1683 res: [Circular] },
1684 read: [Function],
1685 _consuming: true,
1686 _idleNext: null,
1687 _idlePrev: null,
1688 _idleTimeout: -1 },
1689 httpVersionMajor: 1,
1690 httpVersionMinor: 1,
1691 httpVersion: '1.1',
1692 complete: true,
1693 headers:
1694 { server: 'nginx/1.9.15',
1695 date: 'Thu, 22 Sep 2016 09:16:34 GMT',
1696 'content-type': 'text/html',
1697 'content-length': '213',
1698 connection: 'close' },
1699 rawHeaders:
1700 [ 'Server',
1701 'nginx/1.9.15',
1702 'Date',
1703 'Thu, 22 Sep 2016 09:16:34 GMT',
1704 'Content-Type',
1705 'text/html',
1706 'Content-Length',
1707 '213',
1708 'Connection',
1709 'close' ],
1710 trailers: {},
1711 rawTrailers: [],
1712 upgrade: false,
1713 url: '',
1714 method: null,
1715 statusCode: 503,
1716 statusMessage: 'Service Temporarily Unavailable',
1717 client:
1718 Socket {
1719 connecting: false,
1720 _hadError: false,
1721 _handle: null,
1722 _parent: null,
1723 _host: 'notification.treadquants.com',
1724 _readableState:
1725 ReadableState {
1726 objectMode: false,
1727 highWaterMark: 16384,
1728 buffer: [Object],
1729 length: 0,
1730 pipes: null,
1731 pipesCount: 0,
1732 flowing: true,
1733 ended: false,
1734 endEmitted: false,
1735 reading: true,
1736 sync: false,
1737 needReadable: true,
1738 emittedReadable: false,
1739 readableListening: false,
1740 resumeScheduled: false,
1741 defaultEncoding: 'utf8',
1742 ranOut: false,
1743 awaitDrain: 0,
1744 readingMore: false,
1745 decoder: null,
1746 encoding: null },
1747 readable: false,
1748 domain: null,
1749 _events:
1750 { end: [Object],
1751 finish: [Function: onSocketFinish],
1752 _socketEnd: [Function: onSocketEnd],
1753 free: [Function: onFree],
1754 close: [Object],
1755 agentRemove: [Function: onRemove],
1756 drain: [Function: ondrain],
1757 error: [Function: socketErrorListener] },
1758 _eventsCount: 8,
1759 _maxListeners: undefined,
1760 _writableState:
1761 WritableState {
1762 objectMode: false,
1763 highWaterMark: 16384,
1764 needDrain: false,
1765 ending: true,
1766 ended: true,
1767 finished: true,
1768 decodeStrings: false,
1769 defaultEncoding: 'utf8',
1770 length: 0,
1771 writing: false,
1772 corked: 0,
1773 sync: false,
1774 bufferProcessing: false,
1775 onwrite: [Function],
1776 writecb: null,
1777 writelen: 0,
1778 bufferedRequest: null,
1779 lastBufferedRequest: null,
1780 pendingcb: 0,
1781 prefinished: true,
1782 errorEmitted: false,
1783 bufferedRequestCount: 0,
1784 corkedRequestsFree: [Object] },
1785 writable: false,
1786 allowHalfOpen: false,
1787 destroyed: true,
1788 _bytesDispatched: 86,
1789 _sockname: null,
1790 _pendingData: null,
1791 _pendingEncoding: '',
1792 server: null,
1793 _server: null,
1794 parser: null,
1795 _httpMessage:
1796 ClientRequest {
1797 domain: null,
1798 _events: [Object],
1799 _eventsCount: 5,
1800 _maxListeners: undefined,
1801 output: [],
1802 outputEncodings: [],
1803 outputCallbacks: [],
1804 outputSize: 0,
1805 writable: true,
1806 _last: true,
1807 chunkedEncoding: false,
1808 shouldKeepAlive: false,
1809 useChunkedEncodingByDefault: false,
1810 sendDate: false,
1811 _removedHeader: {},
1812 _contentLength: 0,
1813 _hasBody: true,
1814 _trailer: '',
1815 finished: true,
1816 _headerSent: true,
1817 socket: [Circular],
1818 connection: [Circular],
1819 _header: 'GET /init/settings HTTP/1.1\r\nhost: notification.treadquants.com\r\nConnection: close\r\n\r\n',
1820 _headers: [Object],
1821 _headerNames: [Object],
1822 _onPendingData: null,
1823 agent: [Object],
1824 socketPath: undefined,
1825 method: 'GET',
1826 path: '/init/settings',
1827 _ended: true,
1828 parser: null,
1829 res: [Circular] },
1830 read: [Function],
1831 _consuming: true,
1832 _idleNext: null,
1833 _idlePrev: null,
1834 _idleTimeout: -1 },
1835 _consuming: true,
1836 _dumped: false,
1837 req:
1838 ClientRequest {
1839 domain: null,
1840 _events:
1841 { socket: [Object],
1842 response: [Function: bound ],
1843 error: [Function: bound ],
1844 drain: [Function],
1845 prefinish: [Function: requestOnPrefinish] },
1846 _eventsCount: 5,
1847 _maxListeners: undefined,
1848 output: [],
1849 outputEncodings: [],
1850 outputCallbacks: [],
1851 outputSize: 0,
1852 writable: true,
1853 _last: true,
1854 chunkedEncoding: false,
1855 shouldKeepAlive: false,
1856 useChunkedEncodingByDefault: false,
1857 sendDate: false,
1858 _removedHeader: {},
1859 _contentLength: 0,
1860 _hasBody: true,
1861 _trailer: '',
1862 finished: true,
1863 _headerSent: true,
1864 socket:
1865 Socket {
1866 connecting: false,
1867 _hadError: false,
1868 _handle: null,
1869 _parent: null,
1870 _host: 'notification.treadquants.com',
1871 _readableState: [Object],
1872 readable: false,
1873 domain: null,
1874 _events: [Object],
1875 _eventsCount: 8,
1876 _maxListeners: undefined,
1877 _writableState: [Object],
1878 writable: false,
1879 allowHalfOpen: false,
1880 destroyed: true,
1881 _bytesDispatched: 86,
1882 _sockname: null,
1883 _pendingData: null,
1884 _pendingEncoding: '',
1885 server: null,
1886 _server: null,
1887 parser: null,
1888 _httpMessage: [Circular],
1889 read: [Function],
1890 _consuming: true,
1891 _idleNext: null,
1892 _idlePrev: null,
1893 _idleTimeout: -1 },
1894 connection:
1895 Socket {
1896 connecting: false,
1897 _hadError: false,
1898 _handle: null,
1899 _parent: null,
1900 _host: 'notification.treadquants.com',
1901 _readableState: [Object],
1902 readable: false,
1903 domain: null,
1904 _events: [Object],
1905 _eventsCount: 8,
1906 _maxListeners: undefined,
1907 _writableState: [Object],
1908 writable: false,
1909 allowHalfOpen: false,
1910 destroyed: true,
1911 _bytesDispatched: 86,
1912 _sockname: null,
1913 _pendingData: null,
1914 _pendingEncoding: '',
1915 server: null,
1916 _server: null,
1917 parser: null,
1918 _httpMessage: [Circular],
1919 read: [Function],
1920 _consuming: true,
1921 _idleNext: null,
1922 _idlePrev: null,
1923 _idleTimeout: -1 },
1924 _header: 'GET /init/settings HTTP/1.1\r\nhost: notification.treadquants.com\r\nConnection: close\r\n\r\n',
1925 _headers: { host: 'notification.treadquants.com' },
1926 _headerNames: { host: 'host' },
1927 _onPendingData: null,
1928 agent:
1929 Agent {
1930 domain: null,
1931 _events: [Object],
1932 _eventsCount: 1,
1933 _maxListeners: undefined,
1934 defaultPort: 80,
1935 protocol: 'http:',
1936 options: [Object],
1937 requests: {},
1938 sockets: [Object],
1939 freeSockets: {},
1940 keepAliveMsecs: 1000,
1941 keepAlive: false,
1942 maxSockets: Infinity,
1943 maxFreeSockets: 256 },
1944 socketPath: undefined,
1945 method: 'GET',
1946 path: '/init/settings',
1947 _ended: true,
1948 parser: null,
1949 res: [Circular] },
1950 request:
1951 Request {
1952 domain: null,
1953 _events:
1954 { error: [Function: bound ],
1955 complete: [Function: bound ],
1956 pipe: [Function],
1957 data: [Function],
1958 end: [Function] },
1959 _eventsCount: 5,
1960 _maxListeners: undefined,
1961 uri:
1962 Url {
1963 protocol: 'http:',
1964 slashes: true,
1965 auth: null,
1966 host: 'notification.treadquants.com',
1967 port: 80,
1968 hostname: 'notification.treadquants.com',
1969 hash: null,
1970 search: null,
1971 query: null,
1972 pathname: '/init/settings',
1973 path: '/init/settings',
1974 href: 'http://notification.treadquants.com/init/settings' },
1975 callback: [Function],
1976 readable: true,
1977 writable: true,
1978 _qs:
1979 Querystring {
1980 request: [Circular],
1981 lib: [Object],
1982 useQuerystring: undefined,
1983 parseOptions: {},
1984 stringifyOptions: {} },
1985 _auth:
1986 Auth {
1987 request: [Circular],
1988 hasAuth: false,
1989 sentAuth: false,
1990 bearerToken: null,
1991 user: null,
1992 pass: null },
1993 _oauth: OAuth { request: [Circular], params: null },
1994 _multipart:
1995 Multipart {
1996 request: [Circular],
1997 boundary: '87744ba7-ac70-4745-8368-647d2b84ce65',
1998 chunked: false,
1999 body: null },
2000 _redirect:
2001 Redirect {
2002 request: [Circular],
2003 followRedirect: true,
2004 followRedirects: true,
2005 followAllRedirects: false,
2006 allowRedirect: [Function],
2007 maxRedirects: 10,
2008 redirects: [],
2009 redirectsFollowed: 0,
2010 removeRefererHeader: false },
2011 _tunnel:
2012 Tunnel {
2013 request: [Circular],
2014 proxyHeaderWhiteList: [Object],
2015 proxyHeaderExclusiveList: [] },
2016 headers: {},
2017 setHeader: [Function],
2018 hasHeader: [Function],
2019 getHeader: [Function],
2020 removeHeader: [Function],
2021 method: 'GET',
2022 localAddress: undefined,
2023 pool: {},
2024 dests: [],
2025 __isRequestRequest: true,
2026 _callback: [Function],
2027 proxy: null,
2028 tunnel: false,
2029 setHost: true,
2030 originalCookieHeader: undefined,
2031 _disableCookies: true,
2032 _jar: undefined,
2033 port: 80,
2034 host: 'notification.treadquants.com',
2035 path: '/init/settings',
2036 httpModule:
2037 { IncomingMessage: [Object],
2038 METHODS: [Object],
2039 OutgoingMessage: [Object],
2040 ServerResponse: [Object],
2041 STATUS_CODES: [Object],
2042 Agent: [Object],
2043 globalAgent: [Object],
2044 ClientRequest: [Object],
2045 request: [Function],
2046 get: [Function],
2047 _connectionListener: [Function: connectionListener],
2048 Server: [Object],
2049 createServer: [Function],
2050 Client: [Function: deprecated],
2051 createClient: [Function: deprecated] },
2052 agentClass: { [Function: Agent] super_: [Object], defaultMaxSockets: Infinity },
2053 agent:
2054 Agent {
2055 domain: null,
2056 _events: [Object],
2057 _eventsCount: 1,
2058 _maxListeners: undefined,
2059 defaultPort: 80,
2060 protocol: 'http:',
2061 options: [Object],
2062 requests: {},
2063 sockets: [Object],
2064 freeSockets: {},
2065 keepAliveMsecs: 1000,
2066 keepAlive: false,
2067 maxSockets: Infinity,
2068 maxFreeSockets: 256 },
2069 _started: true,
2070 href: 'http://notification.treadquants.com/init/settings',
2071 req:
2072 ClientRequest {
2073 domain: null,
2074 _events: [Object],
2075 _eventsCount: 5,
2076 _maxListeners: undefined,
2077 output: [],
2078 outputEncodings: [],
2079 outputCallbacks: [],
2080 outputSize: 0,
2081 writable: true,
2082 _last: true,
2083 chunkedEncoding: false,
2084 shouldKeepAlive: false,
2085 useChunkedEncodingByDefault: false,
2086 sendDate: false,
2087 _removedHeader: {},
2088 _contentLength: 0,
2089 _hasBody: true,
2090 _trailer: '',
2091 finished: true,
2092 _headerSent: true,
2093 socket: [Object],
2094 connection: [Object],
2095 _header: 'GET /init/settings HTTP/1.1\r\nhost: notification.treadquants.com\r\nConnection: close\r\n\r\n',
2096 _headers: [Object],
2097 _headerNames: [Object],
2098 _onPendingData: null,
2099 agent: [Object],
2100 socketPath: undefined,
2101 method: 'GET',
2102 path: '/init/settings',
2103 _ended: true,
2104 parser: null,
2105 res: [Circular] },
2106 ntick: true,
2107 response: [Circular],
2108 originalHost: 'notification.treadquants.com',
2109 originalHostHeaderName: 'host',
2110 responseContent: [Circular],
2111 _destdata: true,
2112 _ended: true,
2113 _callbackCalled: true },
2114 toJSON: [Function: responseToJSON],
2115 caseless:
2116 Caseless {
2117 dict:
2118 { server: 'nginx/1.9.15',
2119 date: 'Thu, 22 Sep 2016 09:16:34 GMT',
2120 'content-type': 'text/html',
2121 'content-length': '213',
2122 connection: 'close' } },
2123 read: [Function],
2124 body: '<html>\r\n<head><title>503 Service Temporarily Unavailable</title></head>\r\n<body bgcolor="white">\r\n<center><h1>503 Service Temporarily Unavailable</h1></center>\r\n<hr><center>nginx/1.9.15</center>\r\n</body>\r\n</html>\r\n' }
2125error: objectMode=false, highWaterMark=16384, head=null, tail=null, length=0, length=0, pipes=null, pipesCount=0, flowing=true, ended=true, endEmitted=true, reading=false, sync=true, needReadable=false, emittedReadable=false, readableListening=false, resumeScheduled=false, defaultEncoding=utf8, ranOut=false, awaitDrain=0, readingMore=false, decoder=null, encoding=null, readable=false, domain=null, end=[function responseOnEnd() {
2126 const res = this;
2127 const req = this.req;
2128
2129 req._ended = true;
2130 if (!req.shouldKeepAlive || req.finished)
2131 responseKeepAlive(res, req);
2132}, function () {
2133 if (self.timing) {
2134 self.elapsedTime += (new Date().getTime() - self.startTime)
2135 debug('elapsed time', self.elapsedTime)
2136 response.elapsedTime = self.elapsedTime
2137 }
2138 debug('response end', self.uri.href, response.statusCode, response.headers)
2139 }, function () {
2140 self._ended = true
2141 }, function (chunk) {
2142 self.emit('end', chunk)
2143 }], close=[function () {
2144 if (!self._ended) {
2145 self.response.emit('end')
2146 }
2147 }, function () {self.emit('close')}], data=function (chunk) {
2148 if (self.timing && !self.responseStarted) {
2149 self.responseStartTime = (new Date()).getTime()
2150 response.responseStartTime = self.responseStartTime
2151 }
2152 self._destdata = true
2153 self.emit('data', chunk)
2154 }, error=function (error) {
2155 self.emit('error', error)
2156 }, _eventsCount=4, _maxListeners=undefined, connecting=false, _hadError=false, _handle=null, _parent=null, _host=notification.treadquants.com, objectMode=false, highWaterMark=16384, head=null, tail=null, length=0, length=0, pipes=null, pipesCount=0, flowing=true, ended=false, endEmitted=false, reading=true, sync=false, needReadable=true, emittedReadable=false, readableListening=false, resumeScheduled=false, defaultEncoding=utf8, ranOut=false, awaitDrain=0, readingMore=false, decoder=null, encoding=null, readable=false, domain=null, end=[function g() {
2157 target.removeListener(type, g);
2158 if (!fired) {
2159 fired = true;
2160 listener.apply(target, arguments);
2161 }
2162 }], finish=function onSocketFinish() {
2163 // If still connecting - defer handling 'finish' until 'connect' will happen
2164 if (this.connecting) {
2165 debug('osF: not yet connected');
2166 return this.once('connect', onSocketFinish);
2167 }
2168
2169 debug('onSocketFinish');
2170 if (!this.readable || this._readableState.ended) {
2171 debug('oSF: ended, destroy', this._readableState);
2172 return this.destroy();
2173 }
2174
2175 debug('oSF: not ended, call shutdown()');
2176
2177 // otherwise, just shutdown, or destroy() if not possible
2178 if (!this._handle || !this._handle.shutdown)
2179 return this.destroy();
2180
2181 var req = new ShutdownWrap();
2182 req.oncomplete = afterShutdown;
2183 req.handle = this._handle;
2184 var err = this._handle.shutdown(req);
2185
2186 if (err)
2187 return this._destroy(errnoException(err, 'shutdown'));
2188}, _socketEnd=function onSocketEnd() {
2189 // XXX Should not have to do as much crap in this function.
2190 // ended should already be true, since this is called *after*
2191 // the EOF errno and onread has eof'ed
2192 debug('onSocketEnd', this._readableState);
2193 this._readableState.ended = true;
2194 if (this._readableState.endEmitted) {
2195 this.readable = false;
2196 maybeDestroy(this);
2197 } else {
2198 this.once('end', function() {
2199 this.readable = false;
2200 maybeDestroy(this);
2201 });
2202 this.read(0);
2203 }
2204
2205 if (!this.allowHalfOpen) {
2206 this.write = writeAfterFIN;
2207 this.destroySoon();
2208 }
2209}, free=function onFree() {
2210 self.emit('free', s, options);
2211 }, close=[function onClose(err) {
2212 debug('CLIENT socket onClose');
2213 // This is the only place where sockets get removed from the Agent.
2214 // If you want to remove a socket from the pool, just close it.
2215 // All socket errors end in a close event anyway.
2216 self.removeSocket(s, options);
2217 }, function socketCloseListener() {
2218 var socket = this;
2219 var req = socket._httpMessage;
2220 debug('HTTP socket close');
2221
2222 // Pull through final chunk, if anything is buffered.
2223 // the ondata function will handle it properly, and this
2224 // is a no-op if no final chunk remains.
2225 socket.read();
2226
2227 // NOTE: It's important to get parser here, because it could be freed by
2228 // the `socketOnData`.
2229 var parser = socket.parser;
2230 req.emit('close');
2231 if (req.res && req.res.readable) {
2232 // Socket closed before we emitted 'end' below.
2233 req.res.emit('aborted');
2234 var res = req.res;
2235 res.on('end', function() {
2236 res.emit('close');
2237 });
2238 res.push(null);
2239 } else if (!req.res && !req.socket._hadError) {
2240 // This socket error fired before we started to
2241 // receive a response. The error needs to
2242 // fire on the request.
2243 req.emit('error', createHangUpError());
2244 req.socket._hadError = true;
2245 }
2246
2247 // Too bad. That output wasn't getting written.
2248 // This is pretty terrible that it doesn't raise an error.
2249 // Fixed better in v0.10
2250 if (req.output)
2251 req.output.length = 0;
2252 if (req.outputEncodings)
2253 req.outputEncodings.length = 0;
2254
2255 if (parser) {
2256 parser.finish();
2257 freeParser(parser, req, socket);
2258 }
2259}], agentRemove=function onRemove() {
2260 // We need this function for cases like HTTP 'upgrade'
2261 // (defined by WebSockets) where we need to remove a socket from the
2262 // pool because it'll be locked up indefinitely
2263 debug('CLIENT socket onRemove');
2264 self.removeSocket(s, options);
2265 s.removeListener('close', onClose);
2266 s.removeListener('free', onFree);
2267 s.removeListener('agentRemove', onRemove);
2268 }, drain=function ondrain() {
2269 if (this._httpMessage) this._httpMessage.emit('drain');
2270}, error=function socketErrorListener(err) {
2271 var socket = this;
2272 var req = socket._httpMessage;
2273 debug('SOCKET ERROR:', err.message, err.stack);
2274
2275 if (req) {
2276 req.emit('error', err);
2277 // For Safety. Some additional errors might fire later on
2278 // and we need to make sure we don't double-fire the error event.
2279 req.socket._hadError = true;
2280 }
2281
2282 // Handle any pending data
2283 socket.read();
2284
2285 var parser = socket.parser;
2286 if (parser) {
2287 parser.finish();
2288 freeParser(parser, req, socket);
2289 }
2290
2291 // Ensure that no further data will come out of the socket
2292 socket.removeListener('data', socketOnData);
2293 socket.removeListener('end', socketOnEnd);
2294 socket.destroy();
2295}, _eventsCount=8, _maxListeners=undefined, objectMode=false, highWaterMark=16384, needDrain=false, ending=true, ended=true, finished=true, decodeStrings=false, defaultEncoding=utf8, length=0, writing=false, corked=0, sync=false, bufferProcessing=false, onwrite=function (er) {
2296 onwrite(stream, er);
2297 }, writecb=null, writelen=0, bufferedRequest=null, lastBufferedRequest=null, pendingcb=0, prefinished=true, errorEmitted=false, bufferedRequestCount=0, next=null, entry=null, finish=(err) => {
2298 var entry = this.entry;
2299 this.entry = null;
2300 while (entry) {
2301 var cb = entry.callback;
2302 state.pendingcb--;
2303 cb(err);
2304 entry = entry.next;
2305 }
2306 if (state.corkedRequestsFree) {
2307 state.corkedRequestsFree.next = this;
2308 } else {
2309 state.corkedRequestsFree = this;
2310 }
2311 }, writable=false, allowHalfOpen=false, destroyed=true, _bytesDispatched=86, _sockname=null, _pendingData=null, _pendingEncoding=, server=null, _server=null, parser=null, domain=null, socket=[function (socket) {
2312 self.emit('socket', socket)
2313 }], response=function () { [native code] }, error=function () { [native code] }, drain=function () {
2314 self.emit('drain')
2315 }, prefinish=function requestOnPrefinish() {
2316 const req = this;
2317 const res = this.res;
2318
2319 if (!req.shouldKeepAlive)
2320 return;
2321
2322 if (req._ended)
2323 responseKeepAlive(res, req);
2324}, _eventsCount=5, _maxListeners=undefined, output=[], outputEncodings=[], outputCallbacks=[], outputSize=0, writable=true, _last=true, chunkedEncoding=false, shouldKeepAlive=false, useChunkedEncodingByDefault=false, sendDate=false, , _contentLength=0, _hasBody=true, _trailer=, finished=true, _headerSent=true, $ref=$["socket"], $ref=$["socket"], _header=GET /init/settings HTTP/1.1
2325host: notification.treadquants.com
2326Connection: close
2327
2328, host=notification.treadquants.com, host=host, _onPendingData=null, domain=null, free=function (socket, options) {
2329 var name = self.getName(options);
2330 debug('agent.on(free)', name);
2331
2332 if (socket.writable &&
2333 self.requests[name] && self.requests[name].length) {
2334 self.requests[name].shift().onSocket(socket);
2335 if (self.requests[name].length === 0) {
2336 // don't leak
2337 delete self.requests[name];
2338 }
2339 } else {
2340 // If there are no pending requests, then put it in
2341 // the freeSockets pool, but only if we're allowed to do so.
2342 var req = socket._httpMessage;
2343 if (req &&
2344 req.shouldKeepAlive &&
2345 socket.writable &&
2346 self.keepAlive) {
2347 var freeSockets = self.freeSockets[name];
2348 var freeLen = freeSockets ? freeSockets.length : 0;
2349 var count = freeLen;
2350 if (self.sockets[name])
2351 count += self.sockets[name].length;
2352
2353 if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {
2354 socket.destroy();
2355 } else {
2356 freeSockets = freeSockets || [];
2357 self.freeSockets[name] = freeSockets;
2358 socket.setKeepAlive(true, self.keepAliveMsecs);
2359 socket.unref();
2360 socket._httpMessage = null;
2361 self.removeSocket(socket, options);
2362 freeSockets.push(socket);
2363 }
2364 } else {
2365 socket.destroy();
2366 }
2367 }
2368 }, _eventsCount=1, _maxListeners=undefined, defaultPort=80, protocol=http:, path=null, , 169.254.169.254:80:=[connecting=true, _hadError=false, bytesRead=0, , fd=13, reading=false, $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0], onread=function onread(nread, buffer) {
2369 var handle = this;
2370 var self = handle.owner;
2371 assert(handle === self._handle, 'handle != self._handle');
2372
2373 self._unrefTimer();
2374
2375 debug('onread', nread);
2376
2377 if (nread > 0) {
2378 debug('got data');
2379
2380 // read success.
2381 // In theory (and in practice) calling readStop right now
2382 // will prevent this from being called again until _read() gets
2383 // called again.
2384
2385 // Optimization: emit the original buffer with end points
2386 var ret = self.push(buffer);
2387
2388 if (handle.reading && !ret) {
2389 handle.reading = false;
2390 debug('readStop');
2391 var err = handle.readStop();
2392 if (err)
2393 self._destroy(errnoException(err, 'read'));
2394 }
2395 return;
2396 }
2397
2398 // if we didn't get any bytes, that doesn't necessarily mean EOF.
2399 // wait for the next one.
2400 if (nread === 0) {
2401 debug('not any data, keep waiting');
2402 return;
2403 }
2404
2405 // Error, possibly EOF.
2406 if (nread !== uv.UV_EOF) {
2407 return self._destroy(errnoException(nread, 'read'));
2408 }
2409
2410 debug('EOF');
2411
2412 if (self._readableState.length === 0) {
2413 self.readable = false;
2414 maybeDestroy(self);
2415 }
2416
2417 // push a null to signal the end of data.
2418 self.push(null);
2419
2420 // internal end event so that we know that the actual socket
2421 // is no longer readable, and we can start the shutdown
2422 // procedure. No need to wait for all the data to be consumed.
2423 self.emit('_socketEnd');
2424}, onconnection=null, writeQueueSize=0, _parent=null, _host=null, objectMode=false, highWaterMark=16384, head=null, tail=null, length=0, length=0, pipes=null, pipesCount=0, flowing=true, ended=false, endEmitted=false, reading=true, sync=false, needReadable=true, emittedReadable=false, readableListening=false, resumeScheduled=false, defaultEncoding=utf8, ranOut=false, awaitDrain=0, readingMore=false, decoder=null, encoding=null, readable=false, domain=null, end=[function g() {
2425 target.removeListener(type, g);
2426 if (!fired) {
2427 fired = true;
2428 listener.apply(target, arguments);
2429 }
2430 }, function socketOnEnd() {
2431 var socket = this;
2432 var req = this._httpMessage;
2433 var parser = this.parser;
2434
2435 if (!req.res && !req.socket._hadError) {
2436 // If we don't have a response then we know that the socket
2437 // ended prematurely and we need to emit an error on the request.
2438 req.emit('error', createHangUpError());
2439 req.socket._hadError = true;
2440 }
2441 if (parser) {
2442 parser.finish();
2443 freeParser(parser, req, socket);
2444 }
2445 socket.destroy();
2446}], finish=function onSocketFinish() {
2447 // If still connecting - defer handling 'finish' until 'connect' will happen
2448 if (this.connecting) {
2449 debug('osF: not yet connected');
2450 return this.once('connect', onSocketFinish);
2451 }
2452
2453 debug('onSocketFinish');
2454 if (!this.readable || this._readableState.ended) {
2455 debug('oSF: ended, destroy', this._readableState);
2456 return this.destroy();
2457 }
2458
2459 debug('oSF: not ended, call shutdown()');
2460
2461 // otherwise, just shutdown, or destroy() if not possible
2462 if (!this._handle || !this._handle.shutdown)
2463 return this.destroy();
2464
2465 var req = new ShutdownWrap();
2466 req.oncomplete = afterShutdown;
2467 req.handle = this._handle;
2468 var err = this._handle.shutdown(req);
2469
2470 if (err)
2471 return this._destroy(errnoException(err, 'shutdown'));
2472}, _socketEnd=function onSocketEnd() {
2473 // XXX Should not have to do as much crap in this function.
2474 // ended should already be true, since this is called *after*
2475 // the EOF errno and onread has eof'ed
2476
2477 debug('onSocketEnd', this._readableState);
2478 this._readableState.ended = true;
2479 if (this._readableState.endEmitted) {
2480 this.readable = false;
2481 maybeDestroy(this);
2482 } else {
2483 this.once('end', function() {
2484 this.readable = false;
2485 maybeDestroy(this);
2486 });
2487 this.read(0);
2488 }
2489
2490 if (!this.allowHalfOpen) {
2491 this.write = writeAfterFIN;
2492 this.destroySoon();
2493 }
2494}, connect=[function g() {
2495 target.removeListener(type, g);
2496 if (!fired) {
2497 fired = true;
2498 listener.apply(target, arguments);
2499 }
2500 }, function g() {
2501 target.removeListener(type, g);
2502 if (!fired) {
2503 fired = true;
2504 listener.apply(target, arguments);
2505 }
2506 }, function g() {
2507 target.removeListener(type, g);
2508 if (!fired) {
2509 fired = true;
2510 listener.apply(target, arguments);
2511 }
2512 }], free=function onFree() {
2513 self.emit('free', s, options);
2514 }, close=[function onClose(err) {
2515 debug('CLIENT socket onClose');
2516 // This is the only place where sockets get removed from the Agent.
2517 // If you want to remove a socket from the pool, just close it.
2518 // All socket errors end in a close event anyway.
2519 self.removeSocket(s, options);
2520 }, function socketCloseListener() {
2521 var socket = this;
2522 var req = socket._httpMessage;
2523 debug('HTTP socket close');
2524
2525 // Pull through final chunk, if anything is buffered.
2526 // the ondata function will handle it properly, and this
2527 // is a no-op if no final chunk remains.
2528 socket.read();
2529
2530 // NOTE: It's important to get parser here, because it could be freed by
2531 // the `socketOnData`.
2532 var parser = socket.parser;
2533 req.emit('close');
2534 if (req.res && req.res.readable) {
2535 // Socket closed before we emitted 'end' below.
2536 req.res.emit('aborted');
2537 var res = req.res;
2538 res.on('end', function() {
2539 res.emit('close');
2540 });
2541 res.push(null);
2542 } else if (!req.res && !req.socket._hadError) {
2543 // This socket error fired before we started to
2544 // receive a response. The error needs to
2545 // fire on the request.
2546 req.emit('error', createHangUpError());
2547 req.socket._hadError = true;
2548 }
2549
2550 // Too bad. That output wasn't getting written.
2551 // This is pretty terrible that it doesn't raise an error.
2552 // Fixed better in v0.10
2553 if (req.output)
2554 req.output.length = 0;
2555 if (req.outputEncodings)
2556 req.outputEncodings.length = 0;
2557
2558 if (parser) {
2559 parser.finish();
2560 freeParser(parser, req, socket);
2561 }
2562}], agentRemove=function onRemove() {
2563 // We need this function for cases like HTTP 'upgrade'
2564 // (defined by WebSockets) where we need to remove a socket from the
2565 // pool because it'll be locked up indefinitely
2566 debug('CLIENT socket onRemove');
2567 self.removeSocket(s, options);
2568 s.removeListener('close', onClose);
2569 s.removeListener('free', onFree);
2570 s.removeListener('agentRemove', onRemove);
2571 }, drain=function ondrain() {
2572 if (this._httpMessage) this._httpMessage.emit('drain');
2573}, error=function socketErrorListener(err) {
2574 var socket = this;
2575 var req = socket._httpMessage;
2576 debug('SOCKET ERROR:', err.message, err.stack);
2577
2578 if (req) {
2579 req.emit('error', err);
2580 // For Safety. Some additional errors might fire later on
2581 // and we need to make sure we don't double-fire the error event.
2582 req.socket._hadError = true;
2583 }
2584
2585 // Handle any pending data
2586 socket.read();
2587
2588 var parser = socket.parser;
2589 if (parser) {
2590 parser.finish();
2591 freeParser(parser, req, socket);
2592 }
2593
2594 // Ensure that no further data will come out of the socket
2595 socket.removeListener('data', socketOnData);
2596 socket.removeListener('end', socketOnEnd);
2597 socket.destroy();
2598}, data=function socketOnData(d) {
2599 var socket = this;
2600 var req = this._httpMessage;
2601 var parser = this.parser;
2602
2603 assert(parser && parser.socket === socket);
2604
2605 var ret = parser.execute(d);
2606 if (ret instanceof Error) {
2607 debug('parse error');
2608 freeParser(parser, req, socket);
2609 socket.destroy();
2610 req.emit('error', ret);
2611 req.socket._hadError = true;
2612 } else if (parser.incoming && parser.incoming.upgrade) {
2613 // Upgrade or CONNECT
2614 var bytesParsed = ret;
2615 var res = parser.incoming;
2616 req.res = res;
2617
2618 socket.removeListener('data', socketOnData);
2619 socket.removeListener('end', socketOnEnd);
2620 parser.finish();
2621
2622 var bodyHead = d.slice(bytesParsed, d.length);
2623
2624 var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade';
2625 if (req.listenerCount(eventName) > 0) {
2626 req.upgradeOrConnect = true;
2627
2628 // detach the socket
2629 socket.emit('agentRemove');
2630 socket.removeListener('close', socketCloseListener);
2631 socket.removeListener('error', socketErrorListener);
2632
2633 // TODO(isaacs): Need a way to reset a stream to fresh state
2634 // IE, not flowing, and not explicitly paused.
2635 socket._readableState.flowing = null;
2636
2637 req.emit(eventName, res, socket, bodyHead);
2638 req.emit('close');
2639 } else {
2640 // Got Upgrade header or CONNECT method, but have no handler.
2641 socket.destroy();
2642 }
2643 freeParser(parser, req, socket);
2644 } else if (parser.incoming && parser.incoming.complete &&
2645 // When the status code is 100 (Continue), the server will
2646 // send a final response after this client sends a request
2647 // body. So, we must not free the parser.
2648 parser.incoming.statusCode !== 100) {
2649 socket.removeListener('data', socketOnData);
2650 socket.removeListener('end', socketOnEnd);
2651 freeParser(parser, req, socket);
2652 }
2653}, _eventsCount=10, _maxListeners=undefined, objectMode=false, highWaterMark=16384, needDrain=false, ending=false, ended=false, finished=false, decodeStrings=false, defaultEncoding=utf8, length=102, writing=true, corked=0, sync=false, bufferProcessing=false, onwrite=function (er) {
2654 onwrite(stream, er);
2655 }, writecb=() => {
2656 this.emit('finish');
2657 }, writelen=102, bufferedRequest=null, lastBufferedRequest=null, pendingcb=1, prefinished=false, errorEmitted=false, bufferedRequestCount=0, next=null, entry=null, finish=(err) => {
2658 var entry = this.entry;
2659 this.entry = null;
2660 while (entry) {
2661 var cb = entry.callback;
2662 state.pendingcb--;
2663 cb(err);
2664 entry = entry.next;
2665 }
2666 if (state.corkedRequestsFree) {
2667 state.corkedRequestsFree.next = this;
2668 } else {
2669 state.corkedRequestsFree = this;
2670 }
2671 }, writable=true, allowHalfOpen=false, destroyed=false, _bytesDispatched=0, _sockname=null, _pendingData=GET /latest/meta-data/iam/security-credentials/ HTTP/1.1
2672Host: 169.254.169.254
2673Connection: close
2674
2675, _pendingEncoding=binary, server=null, _server=null, 0=function parserOnHeaders(headers, url) {
2676 // Once we exceeded headers limit - stop collecting them
2677 if (this.maxHeaderPairs <= 0 ||
2678 this._headers.length < this.maxHeaderPairs) {
2679 this._headers = this._headers.concat(headers);
2680 }
2681 this._url += url;
2682}, 1=function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
2683 url, statusCode, statusMessage, upgrade,
2684 shouldKeepAlive) {
2685 var parser = this;
2686
2687 if (!headers) {
2688 headers = parser._headers;
2689 parser._headers = [];
2690 }
2691
2692 if (!url) {
2693 url = parser._url;
2694 parser._url = '';
2695 }
2696
2697 parser.incoming = new IncomingMessage(parser.socket);
2698 parser.incoming.httpVersionMajor = versionMajor;
2699 parser.incoming.httpVersionMinor = versionMinor;
2700 parser.incoming.httpVersion = versionMajor + '.' + versionMinor;
2701 parser.incoming.url = url;
2702
2703 var n = headers.length;
2704
2705 // If parser.maxHeaderPairs <= 0 assume that there's no limit.
2706 if (parser.maxHeaderPairs > 0)
2707 n = Math.min(n, parser.maxHeaderPairs);
2708
2709 parser.incoming._addHeaderLines(headers, n);
2710
2711 if (typeof method === 'number') {
2712 // server only
2713 parser.incoming.method = methods[method];
2714 } else {
2715 // client only
2716 parser.incoming.statusCode = statusCode;
2717 parser.incoming.statusMessage = statusMessage;
2718 }
2719
2720 // The client made non-upgrade request, and server is just advertising
2721 // supported protocols.
2722 //
2723 // See RFC7230 Section 6.7
2724 //
2725 // NOTE: RegExp below matches `upgrade` in `Connection: abc, upgrade, def`
2726 // header.
2727 if (upgrade &&
2728 parser.outgoing !== null &&
2729 (parser.outgoing._headers.upgrade === undefined ||
2730 !/(^|\W)upgrade(\W|$)/i.test(parser.outgoing._headers.connection))) {
2731 upgrade = false;
2732 }
2733
2734 parser.incoming.upgrade = upgrade;
2735
2736 var skipBody = 0; // response to HEAD or CONNECT
2737
2738 if (!upgrade) {
2739 // For upgraded connections and CONNECT method request, we'll emit this
2740 // after parser.execute so that we can capture the first part of the new
2741 // protocol.
2742 skipBody = parser.onIncoming(parser.incoming, shouldKeepAlive);
2743 }
2744
2745 if (typeof skipBody !== 'number')
2746 return skipBody ? 1 : 0;
2747 else
2748 return skipBody;
2749}, 2=function parserOnBody(b, start, len) {
2750 var parser = this;
2751 var stream = parser.incoming;
2752
2753 // if the stream has already been removed, then drop it.
2754 if (!stream)
2755 return;
2756
2757 var socket = stream.socket;
2758
2759 // pretend this was the result of a stream._read call.
2760 if (len > 0 && !stream._dumped) {
2761 var slice = b.slice(start, start + len);
2762 var ret = stream.push(slice);
2763 if (!ret)
2764 readStop(socket);
2765 }
2766}, 3=function parserOnMessageComplete() {
2767 var parser = this;
2768 var stream = parser.incoming;
2769
2770 if (stream) {
2771 stream.complete = true;
2772 // Emit any trailing headers.
2773 var headers = parser._headers;
2774 if (headers) {
2775 parser.incoming._addHeaderLines(headers, headers.length);
2776 parser._headers = [];
2777 parser._url = '';
2778 }
2779
2780 // For emit end event
2781 stream.push(null);
2782 }
2783
2784 // force to read the next incoming message
2785 readStart(parser.socket);
2786}, 4=null, _headers=[], _url=, _consumed=false, $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0], incoming=null, domain=null, response=function g() {
2787 target.removeListener(type, g);
2788 if (!fired) {
2789 fired = true;
2790 listener.apply(target, arguments);
2791 }
2792 }, error=function g() {
2793 target.removeListener(type, g);
2794 if (!fired) {
2795 fired = true;
2796 listener.apply(target, arguments);
2797 }
2798 }, _eventsCount=2, _maxListeners=undefined, output=[], outputEncodings=[], outputCallbacks=[], outputSize=0, writable=true, _last=true, chunkedEncoding=false, shouldKeepAlive=false, useChunkedEncodingByDefault=false, sendDate=false, , _contentLength=0, _hasBody=true, _trailer=, finished=true, _headerSent=true, $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0], $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0], _header=GET /latest/meta-data/iam/security-credentials/ HTTP/1.1
2799Host: 169.254.169.254
2800Connection: close
2801
2802, host=169.254.169.254, host=Host, _onPendingData=null, $ref=$["socket"]["_httpMessage"]["agent"], socketPath=undefined, method=GET, path=/latest/meta-data/iam/security-credentials/, _ended=false, timeoutCb=function emitTimeout() {
2803 self.emit('timeout');
2804 }, $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0]["parser"], maxHeaderPairs=2000, onIncoming=function parserOnIncomingClient(res, shouldKeepAlive) {
2805 var socket = this.socket;
2806 var req = socket._httpMessage;
2807
2808
2809 // propagate "domain" setting...
2810 if (req.domain && !res.domain) {
2811 debug('setting "res.domain"');
2812 res.domain = req.domain;
2813 }
2814
2815 debug('AGENT incoming response!');
2816
2817 if (req.res) {
2818 // We already have a response object, this means the server
2819 // sent a double response.
2820 socket.destroy();
2821 return;
2822 }
2823 req.res = res;
2824
2825 // Responses to CONNECT request is handled as Upgrade.
2826 if (req.method === 'CONNECT') {
2827 res.upgrade = true;
2828 return 2; // skip body, and the rest
2829 }
2830
2831 // Responses to HEAD requests are crazy.
2832 // HEAD responses aren't allowed to have an entity-body
2833 // but *can* have a content-length which actually corresponds
2834 // to the content-length of the entity-body had the request
2835 // been a GET.
2836 var isHeadResponse = req.method === 'HEAD';
2837 debug('AGENT isHeadResponse', isHeadResponse);
2838
2839 if (res.statusCode === 100) {
2840 // restart the parser, as this is a continue message.
2841 delete req.res; // Clear res so that we don't hit double-responses.
2842 req.emit('continue');
2843 return true;
2844 }
2845
2846 if (req.shouldKeepAlive && !shouldKeepAlive && !req.upgradeOrConnect) {
2847 // Server MUST respond with Connection:keep-alive for us to enable it.
2848 // If we've been upgraded (via WebSockets) we also shouldn't try to
2849 // keep the connection open.
2850 req.shouldKeepAlive = false;
2851 }
2852
2853
2854 ;
2855 ;
2856 ;
2857 req.res = res;
2858 res.req = req;
2859
2860 // add our listener first, so that we guarantee socket cleanup
2861 res.on('end', responseOnEnd);
2862 req.on('prefinish', requestOnPrefinish);
2863 var handled = req.emit('response', res);
2864
2865 // If the user did not listen for the 'response' event, then they
2866 // can't possibly read the data, so we ._dump() it into the void
2867 // so that the socket doesn't hang there in a paused state.
2868 if (!handled)
2869 res._dump();
2870
2871 return isHeadResponse;
2872}, $ref=$["socket"]["_httpMessage"]["agent"]["sockets"]["169.254.169.254:80:"][0]["parser"]["outgoing"], _idleTimeout=1000, _idleNext=null, _idlePrev=null, _idleStart=3739097, read=function (n) {
2873 debug('read', n);
2874 n = parseInt(n, 10);
2875 var state = this._readableState;
2876 var nOrig = n;
2877
2878 if (n !== 0)
2879 state.emittedReadable = false;
2880
2881 // if we're doing read(0) to trigger a readable event, but we
2882 // already have a bunch of data in the buffer, then just trigger
2883 // the 'readable' event and move on.
2884 if (n === 0 &&
2885 state.needReadable &&
2886 (state.length >= state.highWaterMark || state.ended)) {
2887 debug('read: emitReadable', state.length, state.ended);
2888 if (state.length === 0 && state.ended)
2889 endReadable(this);
2890 else
2891 emitReadable(this);
2892 return null;
2893 }
2894
2895 n = howMuchToRead(n, state);
2896
2897 // if we've ended, and we're now clear, then finish it up.
2898 if (n === 0 && state.ended) {
2899 if (state.length === 0)
2900 endReadable(this);
2901 return null;
2902 }
2903
2904 // All the actual chunk generation logic needs to be
2905 // *below* the call to _read. The reason is that in certain
2906 // synthetic stream cases, such as passthrough streams, _read
2907 // may be a completely synchronous operation which may change
2908 // the state of the read buffer, providing enough data when
2909 // before there was *not* enough.
2910 //
2911 // So, the steps are:
2912 // 1. Figure out what the state of things will be after we do
2913 // a read from the buffer.
2914 //
2915 // 2. If that resulting state will trigger a _read, then call _read.
2916 // Note that this may be asynchronous, or synchronous. Yes, it is
2917 // deeply ugly to write APIs this way, but that still doesn't mean
2918 // that the Readable class should behave improperly, as streams are
2919 // designed to be sync/async agnostic.
2920 // Take note if the _read call is sync or async (ie, if the read call
2921 // has returned yet), so that we know whether or not it's safe to emit
2922 // 'readable' etc.
2923 //
2924 // 3. Actually pull the requested chunks out of the buffer and return.
2925
2926 // if we need a readable event, then we need to do some reading.
2927 var doRead = state.needReadable;
2928 debug('need readable', doRead);
2929
2930 // if we currently have less than the highWaterMark, then also read some
2931 if (state.length === 0 || state.length - n < state.highWaterMark) {
2932 doRead = true;
2933 debug('length less than watermark', doRead);
2934 }
2935
2936 // however, if we've ended, then there's no point, and if we're already
2937 // reading, then it's unnecessary.
2938 if (state.ended || state.reading) {
2939 doRead = false;
2940 debug('reading or ended', doRead);
2941 } else if (doRead) {
2942 debug('do read');
2943 state.reading = true;
2944 state.sync = true;
2945 // if the length is currently zero, then we *need* a readable event.
2946 if (state.length === 0)
2947 state.needReadable = true;
2948 // call internal read method
2949 this._read(state.highWaterMark);
2950 state.sync = false;
2951 // If _read pushed data synchronously, then `reading` will be false,
2952 // and we need to re-evaluate how much data we can return to the user.
2953 if (!state.reading)
2954 n = howMuchToRead(nOrig, state);
2955 }
2956
2957 var ret;
2958 if (n > 0)
2959 ret = fromList(n, state);
2960 else
2961 ret = null;
2962
2963 if (ret === null) {
2964 state.needReadable = true;
2965 n = 0;
2966 } else {
2967 state.length -= n;
2968 }
2969
2970 if (state.length === 0) {
2971 // If we have nothing in the buffer, then we want to know
2972 // as soon as we *do* get something into the buffer.
2973 if (!state.ended)
2974 state.needReadable = true;
2975
2976 // If we tried to read() past the EOF, then emit end on the next tick.
2977 if (nOrig !== n && state.ended)
2978 endReadable(this);
2979 }
2980
2981 if (ret !== null)
2982 this.emit('data', ret);
2983
2984 return ret;
2985}, _consuming=true, _called=true], notification.treadquants.com:80:=[$ref=$["socket"]], , keepAliveMsecs=1000, keepAlive=false, maxSockets=Infinity, maxFreeSockets=256, socketPath=undefined, method=GET, path=/init/settings, _ended=true, parser=null, $ref=$, read=function (n) {
2986 debug('read', n);
2987 n = parseInt(n, 10);
2988 var state = this._readableState;
2989 var nOrig = n;
2990
2991 if (n !== 0)
2992 state.emittedReadable = false;
2993
2994 // if we're doing read(0) to trigger a readable event, but we
2995 // already have a bunch of data in the buffer, then just trigger
2996 // the 'readable' event and move on.
2997 if (n === 0 &&
2998 state.needReadable &&
2999 (state.length >= state.highWaterMark || state.ended)) {
3000 debug('read: emitReadable', state.length, state.ended);
3001 if (state.length === 0 && state.ended)
3002 endReadable(this);
3003 else
3004 emitReadable(this);
3005 return null;
3006 }
3007
3008 n = howMuchToRead(n, state);
3009
3010 // if we've ended, and we're now clear, then finish it up.
3011 if (n === 0 && state.ended) {
3012 if (state.length === 0)
3013 endReadable(this);
3014 return null;
3015 }
3016
3017 // All the actual chunk generation logic needs to be
3018 // *below* the call to _read. The reason is that in certain
3019 // synthetic stream cases, such as passthrough streams, _read
3020 // may be a completely synchronous operation which may change
3021 // the state of the read buffer, providing enough data when
3022 // before there was *not* enough.
3023 //
3024 // So, the steps are:
3025 // 1. Figure out what the state of things will be after we do
3026 // a read from the buffer.
3027 //
3028 // 2. If that resulting state will trigger a _read, then call _read.
3029 // Note that this may be asynchronous, or synchronous. Yes, it is
3030 // deeply ugly to write APIs this way, but that still doesn't mean
3031 // that the Readable class should behave improperly, as streams are
3032 // designed to be sync/async agnostic.
3033 // Take note if the _read call is sync or async (ie, if the read call
3034 // has returned yet), so that we know whether or not it's safe to emit
3035 // 'readable' etc.
3036 //
3037 // 3. Actually pull the requested chunks out of the buffer and return.
3038
3039 // if we need a readable event, then we need to do some reading.
3040 var doRead = state.needReadable;
3041 debug('need readable', doRead);
3042
3043 // if we currently have less than the highWaterMark, then also read some
3044 if (state.length === 0 || state.length - n < state.highWaterMark) {
3045 doRead = true;
3046 debug('length less than watermark', doRead);
3047 }
3048
3049 // however, if we've ended, then there's no point, and if we're already
3050 // reading, then it's unnecessary.
3051 if (state.ended || state.reading) {
3052 doRead = false;
3053 debug('reading or ended', doRead);
3054 } else if (doRead) {
3055 debug('do read');
3056 state.reading = true;
3057 state.sync = true;
3058 // if the length is currently zero, then we *need* a readable event.
3059 if (state.length === 0)
3060 state.needReadable = true;
3061 // call internal read method
3062 this._read(state.highWaterMark);
3063 state.sync = false;
3064 // If _read pushed data synchronously, then `reading` will be false,
3065 // and we need to re-evaluate how much data we can return to the user.
3066 if (!state.reading)
3067 n = howMuchToRead(nOrig, state);
3068 }
3069
3070 var ret;
3071 if (n > 0)
3072 ret = fromList(n, state);
3073 else
3074 ret = null;
3075
3076 if (ret === null) {
3077 state.needReadable = true;
3078 n = 0;
3079 } else {
3080 state.length -= n;
3081 }
3082
3083 if (state.length === 0) {
3084 // If we have nothing in the buffer, then we want to know
3085 // as soon as we *do* get something into the buffer.
3086 if (!state.ended)
3087 state.needReadable = true;
3088
3089 // If we tried to read() past the EOF, then emit end on the next tick.
3090 if (nOrig !== n && state.ended)
3091 endReadable(this);
3092 }
3093
3094 if (ret !== null)
3095 this.emit('data', ret);
3096
3097 return ret;
3098}, _consuming=true, _idleNext=null, _idlePrev=null, _idleTimeout=-1, $ref=$["socket"], httpVersionMajor=1, httpVersionMinor=1, httpVersion=1.1, complete=true, server=nginx/1.9.15, date=Thu, 22 Sep 2016 09:16:34 GMT, content-type=text/html, content-length=213, connection=close, rawHeaders=[Server, nginx/1.9.15, Date, Thu, 22 Sep 2016 09:16:34 GMT, Content-Type, text/html, Content-Length, 213, Connection, close], , rawTrailers=[], upgrade=false, url=, method=null, statusCode=503, statusMessage=Service Temporarily Unavailable, $ref=$["socket"], _consuming=true, _dumped=false, $ref=$["socket"]["_httpMessage"], domain=null, error=function () { [native code] }, complete=function () { [native code] }, pipe=function (src) {
3099 if (self.ntick && self._started) {
3100 self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))
3101 }
3102 self.src = src
3103 if (isReadStream(src)) {
3104 if (!self.hasHeader('content-type')) {
3105 self.setHeader('content-type', mime.lookup(src.path))
3106 }
3107 } else {
3108 if (src.headers) {
3109 for (var i in src.headers) {
3110 if (!self.hasHeader(i)) {
3111 self.setHeader(i, src.headers[i])
3112 }
3113 }
3114 }
3115 if (self._json && !self.hasHeader('content-type')) {
3116 self.setHeader('content-type', 'application/json')
3117 }
3118 if (src.method && !self.explicitMethod) {
3119 self.method = src.method
3120 }
3121 }
3122
3123 // self.on('pipe', function () {
3124 // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')
3125 // })
3126 }, data=function (chunk) {
3127 if (Buffer.isBuffer(chunk)) {
3128 buffer.append(chunk)
3129 } else {
3130 strings.push(chunk)
3131 }
3132 }, end=function () {
3133 debug('end event', self.uri.href)
3134 if (self._aborted) {
3135 debug('aborted', self.uri.href)
3136 // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.
3137 // This can lead to leaky behavior if the user retains a reference to the request object.
3138 buffer.destroy()
3139 return
3140 }
3141
3142 if (buffer.length) {
3143 debug('has body', self.uri.href, buffer.length)
3144 if (self.encoding === null) {
3145 // response.body = buffer
3146 // can't move to this until https://github.com/rvagg/bl/issues/13
3147 response.body = buffer.slice()
3148 } else {
3149 response.body = buffer.toString(self.encoding)
3150 }
3151 // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.
3152 // This can lead to leaky behavior if the user retains a reference to the request object.
3153 buffer.destroy()
3154 } else if (strings.length) {
3155 // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.
3156 // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().
3157 if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') {
3158 strings[0] = strings[0].substring(1)
3159 }
3160 response.body = strings.join('')
3161 }
3162
3163 if (self._json) {
3164 try {
3165 response.body = JSON.parse(response.body, self._jsonReviver)
3166 } catch (e) {
3167 debug('invalid JSON received', self.uri.href)
3168 }
3169 }
3170 debug('emitting complete', self.uri.href)
3171 if (typeof response.body === 'undefined' && !self._json) {
3172 response.body = self.encoding === null ? new Buffer(0) : ''
3173 }
3174 self.emit('complete', response, response.body)
3175 }, _eventsCount=5, _maxListeners=undefined, protocol=http:, slashes=true, auth=null, host=notification.treadquants.com, port=80, hostname=notification.treadquants.com, hash=null, search=null, query=null, pathname=/init/settings, path=/init/settings, href=http://notification.treadquants.com/init/settings, callback=function () {
3176 if (self._callbackCalled) {
3177 return // Print a warning maybe?
3178 }
3179 self._callbackCalled = true
3180 self._callback.apply(self, arguments)
3181 }, readable=true, writable=true, $ref=$["request"], stringify=function (object, opts) {
3182 var obj = object;
3183 var options = opts || {};
3184 var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
3185 var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
3186 var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
3187 var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
3188 var encoder = encode ? (typeof options.encoder === 'function' ? options.encoder : defaults.encoder) : null;
3189 var sort = typeof options.sort === 'function' ? options.sort : null;
3190 var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
3191 var objKeys;
3192 var filter;
3193
3194 if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
3195 throw new TypeError('Encoder has to be a function.');
3196 }
3197
3198 if (typeof options.filter === 'function') {
3199 filter = options.filter;
3200 obj = filter('', obj);
3201 } else if (Array.isArray(options.filter)) {
3202 objKeys = filter = options.filter;
3203 }
3204
3205 var keys = [];
3206
3207 if (typeof obj !== 'object' || obj === null) {
3208 return '';
3209 }
3210
3211 var arrayFormat;
3212 if (options.arrayFormat in arrayPrefixGenerators) {
3213 arrayFormat = options.arrayFormat;
3214 } else if ('indices' in options) {
3215 arrayFormat = options.indices ? 'indices' : 'repeat';
3216 } else {
3217 arrayFormat = 'indices';
3218 }
3219
3220 var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
3221
3222 if (!objKeys) {
3223 objKeys = Object.keys(obj);
3224 }
3225
3226 if (sort) {
3227 objKeys.sort(sort);
3228 }
3229
3230 for (var i = 0; i < objKeys.length; ++i) {
3231 var key = objKeys[i];
3232
3233 if (skipNulls && obj[key] === null) {
3234 continue;
3235 }
3236
3237 keys = keys.concat(stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
3238 }
3239
3240 return keys.join(delimiter);
3241}, parse=function (str, opts) {
3242 var options = opts || {};
3243
3244 if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
3245 throw new TypeError('Decoder has to be a function.');
3246 }
3247
3248 options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
3249 options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
3250 options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
3251 options.parseArrays = options.parseArrays !== false;
3252 options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
3253 options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
3254 options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
3255 options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
3256 options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
3257 options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
3258
3259 if (str === '' || str === null || typeof str === 'undefined') {
3260 return options.plainObjects ? Object.create(null) : {};
3261 }
3262
3263 var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
3264 var obj = options.plainObjects ? Object.create(null) : {};
3265
3266 // Iterate over the keys and setup the new object
3267
3268 var keys = Object.keys(tempObj);
3269 for (var i = 0; i < keys.length; ++i) {
3270 var key = keys[i];
3271 var newObj = parseKeys(key, tempObj[key], options);
3272 obj = Utils.merge(obj, newObj, options);
3273 }
3274
3275 return Utils.compact(obj);
3276}, useQuerystring=undefined, , , $ref=$["request"], hasAuth=false, sentAuth=false, bearerToken=null, user=null, pass=null, $ref=$["request"], params=null, $ref=$["request"], boundary=87744ba7-ac70-4745-8368-647d2b84ce65, chunked=false, body=null, $ref=$["request"], followRedirect=true, followRedirects=true, followAllRedirects=false, allowRedirect=function () {return true}, maxRedirects=10, redirects=[], redirectsFollowed=0, removeRefererHeader=false, $ref=$["request"], proxyHeaderWhiteList=[accept, accept-charset, accept-encoding, accept-language, accept-ranges, cache-control, content-encoding, content-language, content-location, content-md5, content-range, content-type, connection, date, expect, max-forwards, pragma, referer, te, user-agent, via], proxyHeaderExclusiveList=[], , setHeader=function (key, value, clobber) {
3277 if (typeof value === 'undefined') return
3278 return c.set(key, value, clobber)
3279 }, hasHeader=function (key) {
3280 return c.has(key)
3281 }, getHeader=function (key) {
3282 return c.get(key)
3283 }, removeHeader=function (key) {
3284 return c.del(key)
3285 }, method=GET, localAddress=undefined, , dests=[], __isRequestRequest=true, _callback=function (error, response, body) {
3286 if (error || response.statusCode != 200) {
3287 callback(error || response)
3288 return
3289 }
3290
3291 config = JSON.parse(body).result
3292
3293 api.connect('amqp://'+config.amqpServer)
3294 .then(function(connection) {
3295 connection.createChannel()
3296 .then(function(cn) {
3297 channel = cn;
3298 channel.assertQueue(config.queueName);
3299 callback(false, true)
3300 })
3301 .catch(function(err) {
3302 callback(err)
3303 })
3304 })
3305
3306 }, proxy=null, tunnel=false, setHost=true, originalCookieHeader=undefined, _disableCookies=true, _jar=undefined, port=80, host=notification.treadquants.com, path=/init/settings, IncomingMessage=function IncomingMessage(socket) {
3307 Stream.Readable.call(this);
3308
3309 // Set this to `true` so that stream.Readable won't attempt to read more
3310 // data on `IncomingMessage#push` (see `maybeReadMore` in
3311 // `_stream_readable.js`). This is important for proper tracking of
3312 // `IncomingMessage#_consuming` which is used to dump requests that users
3313 // haven't attempted to read.
3314 this._readableState.readingMore = true;
3315
3316 this.socket = socket;
3317 this.connection = socket;
3318
3319 this.httpVersionMajor = null;
3320 this.httpVersionMinor = null;
3321 this.httpVersion = null;
3322 this.complete = false;
3323 this.headers = {};
3324 this.rawHeaders = [];
3325 this.trailers = {};
3326 this.rawTrailers = [];
3327
3328 this.readable = true;
3329
3330 this.upgrade = null;
3331
3332 // request (server) only
3333 this.url = '';
3334 this.method = null;
3335
3336 // response (client) only
3337 this.statusCode = null;
3338 this.statusMessage = null;
3339 this.client = socket;
3340
3341 // flag for backwards compatibility grossness.
3342 this._consuming = false;
3343
3344 // flag for when we decide that this message cannot possibly be
3345 // read by the user, so there's no point continuing to handle it.
3346 this._dumped = false;
3347}, METHODS=[ACL, BIND, CHECKOUT, CONNECT, COPY, DELETE, GET, HEAD, LINK, LOCK, M-SEARCH, MERGE, MKACTIVITY, MKCALENDAR, MKCOL, MOVE, NOTIFY, OPTIONS, PATCH, POST, PROPFIND, PROPPATCH, PURGE, PUT, REBIND, REPORT, SEARCH, SUBSCRIBE, TRACE, UNBIND, UNLINK, UNLOCK, UNSUBSCRIBE], OutgoingMessage=function OutgoingMessage() {
3348 Stream.call(this);
3349
3350 // Queue that holds all currently pending data, until the response will be
3351 // assigned to the socket (until it will its turn in the HTTP pipeline).
3352 this.output = [];
3353 this.outputEncodings = [];
3354 this.outputCallbacks = [];
3355
3356 // `outputSize` is an approximate measure of how much data is queued on this
3357 // response. `_onPendingData` will be invoked to update similar global
3358 // per-connection counter. That counter will be used to pause/unpause the
3359 // TCP socket and HTTP Parser and thus handle the backpressure.
3360 this.outputSize = 0;
3361
3362 this.writable = true;
3363
3364 this._last = false;
3365 this.chunkedEncoding = false;
3366 this.shouldKeepAlive = true;
3367 this.useChunkedEncodingByDefault = true;
3368 this.sendDate = false;
3369 this._removedHeader = {};
3370
3371 this._contentLength = null;
3372 this._hasBody = true;
3373 this._trailer = '';
3374
3375 this.finished = false;
3376 this._headerSent = false;
3377
3378 this.socket = null;
3379 this.connection = null;
3380 this._header = null;
3381 this._headers = null;
3382 this._headerNames = {};
3383
3384 this._onPendingData = null;
3385}, ServerResponse=function ServerResponse(req) {
3386 OutgoingMessage.call(this);
3387
3388 if (req.method === 'HEAD') this._hasBody = false;
3389
3390 this.sendDate = true;
3391
3392 if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {
3393 this.useChunkedEncodingByDefault = chunkExpression.test(req.headers.te);
3394 this.shouldKeepAlive = false;
3395 }
3396}, 100=Continue, 101=Switching Protocols, 102=Processing, 200=OK, 201=Created, 202=Accepted, 203=Non-Authoritative Information, 204=No Content, 205=Reset Content, 206=Partial Content, 207=Multi-Status, 208=Already Reported, 226=IM Used, 300=Multiple Choices, 301=Moved Permanently, 302=Found, 303=See Other, 304=Not Modified, 305=Use Proxy, 307=Temporary Redirect, 308=Permanent Redirect, 400=Bad Request, 401=Unauthorized, 402=Payment Required, 403=Forbidden, 404=Not Found, 405=Method Not Allowed, 406=Not Acceptable, 407=Proxy Authentication Required, 408=Request Timeout, 409=Conflict, 410=Gone, 411=Length Required, 412=Precondition Failed, 413=Payload Too Large, 414=URI Too Long, 415=Unsupported Media Type, 416=Range Not Satisfiable, 417=Expectation Failed, 418=I'm a teapot, 421=Misdirected Request, 422=Unprocessable Entity, 423=Locked, 424=Failed Dependency, 425=Unordered Collection, 426=Upgrade Required, 428=Precondition Required, 429=Too Many Requests, 431=Request Header Fields Too Large, 451=Unavailable For Legal Reasons, 500=Internal Server Error, 501=Not Implemented, 502=Bad Gateway, 503=Service Unavailable, 504=Gateway Timeout, 505=HTTP Version Not Supported, 506=Variant Also Negotiates, 507=Insufficient Storage, 508=Loop Detected, 509=Bandwidth Limit Exceeded, 510=Not Extended, 511=Network Authentication Required, Agent=function Agent(options) {
3397 if (!(this instanceof Agent))
3398 return new Agent(options);
3399
3400 EventEmitter.call(this);
3401
3402 var self = this;
3403
3404 self.defaultPort = 80;
3405 self.protocol = 'http:';
3406
3407 self.options = util._extend({}, options);
3408
3409 // don't confuse net and make it think that we're connecting to a pipe
3410 self.options.path = null;
3411 self.requests = {};
3412 self.sockets = {};
3413 self.freeSockets = {};
3414 self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;
3415 self.keepAlive = self.options.keepAlive || false;
3416 self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;
3417 self.maxFreeSockets = self.options.maxFreeSockets || 256;
3418
3419 self.on('free', function(socket, options) {
3420 var name = self.getName(options);
3421 debug('agent.on(free)', name);
3422
3423 if (socket.writable &&
3424 self.requests[name] && self.requests[name].length) {
3425 self.requests[name].shift().onSocket(socket);
3426 if (self.requests[name].length === 0) {
3427 // don't leak
3428 delete self.requests[name];
3429 }
3430 } else {
3431 // If there are no pending requests, then put it in
3432 // the freeSockets pool, but only if we're allowed to do so.
3433 var req = socket._httpMessage;
3434 if (req &&
3435 req.shouldKeepAlive &&
3436 socket.writable &&
3437 self.keepAlive) {
3438 var freeSockets = self.freeSockets[name];
3439 var freeLen = freeSockets ? freeSockets.length : 0;
3440 var count = freeLen;
3441 if (self.sockets[name])
3442 count += self.sockets[name].length;
3443
3444 if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {
3445 socket.destroy();
3446 } else {
3447 freeSockets = freeSockets || [];
3448 self.freeSockets[name] = freeSockets;
3449 socket.setKeepAlive(true, self.keepAliveMsecs);
3450 socket.unref();
3451 socket._httpMessage = null;
3452 self.removeSocket(socket, options);
3453 freeSockets.push(socket);
3454 }
3455 } else {
3456 socket.destroy();
3457 }
3458 }
3459 });
3460}, $ref=$["socket"]["_httpMessage"]["agent"], ClientRequest=function ClientRequest(options, cb) {
3461 var self = this;
3462 OutgoingMessage.call(self);
3463
3464 if (typeof options === 'string') {
3465 options = url.parse(options);
3466 if (!options.hostname) {
3467 throw new Error('Unable to determine the domain name');
3468 }
3469 } else {
3470 options = util._extend({}, options);
3471 }
3472
3473 var agent = options.agent;
3474 var defaultAgent = options._defaultAgent || Agent.globalAgent;
3475 if (agent === false) {
3476 agent = new defaultAgent.constructor();
3477 } else if ((agent === null || agent === undefined) &&
3478 typeof options.createConnection !== 'function') {
3479 agent = defaultAgent;
3480 }
3481 self.agent = agent;
3482
3483 var protocol = options.protocol || defaultAgent.protocol;
3484 var expectedProtocol = defaultAgent.protocol;
3485 if (self.agent && self.agent.protocol)
3486 expectedProtocol = self.agent.protocol;
3487
3488 if (options.path && / /.test(options.path)) {
3489 // The actual regex is more like /[^A-Za-z0-9\-._~!$&'()*+,;=/:@]/
3490 // with an additional rule for ignoring percentage-escaped characters
3491 // but that's a) hard to capture in a regular expression that performs
3492 // well, and b) possibly too restrictive for real-world usage. That's
3493 // why it only scans for spaces because those are guaranteed to create
3494 // an invalid request.
3495 throw new TypeError('Request path contains unescaped characters');
3496 } else if (protocol !== expectedProtocol) {
3497 throw new Error('Protocol "' + protocol + '" not supported. ' +
3498 'Expected "' + expectedProtocol + '"');
3499 }
3500
3501 const defaultPort = options.defaultPort ||
3502 self.agent && self.agent.defaultPort;
3503
3504 var port = options.port = options.port || defaultPort || 80;
3505 var host = options.host = options.hostname || options.host || 'localhost';
3506
3507 if (options.setHost === undefined) {
3508 var setHost = true;
3509 }
3510
3511 self.socketPath = options.socketPath;
3512
3513 var method = self.method = (options.method || 'GET').toUpperCase();
3514 if (!common._checkIsHttpToken(method)) {
3515 throw new TypeError('Method must be a valid HTTP token');
3516 }
3517 self.path = options.path || '/';
3518 if (cb) {
3519 self.once('response', cb);
3520 }
3521
3522 if (!Array.isArray(options.headers)) {
3523 if (options.headers) {
3524 var keys = Object.keys(options.headers);
3525 for (var i = 0, l = keys.length; i < l; i++) {
3526 var key = keys[i];
3527 self.setHeader(key, options.headers[key]);
3528 }
3529 }
3530 if (host && !this.getHeader('host') && setHost) {
3531 var hostHeader = host;
3532 var posColon = -1;
3533
3534 // For the Host header, ensure that IPv6 addresses are enclosed
3535 // in square brackets, as defined by URI formatting
3536 // https://tools.ietf.org/html/rfc3986#section-3.2.2
3537 if (-1 !== (posColon = hostHeader.indexOf(':')) &&
3538 -1 !== (posColon = hostHeader.indexOf(':', posColon)) &&
3539 '[' !== hostHeader[0]) {
3540 hostHeader = `[${hostHeader}]`;
3541 }
3542
3543 if (port && +port !== defaultPort) {
3544 hostHeader += ':' + port;
3545 }
3546 this.setHeader('Host', hostHeader);
3547 }
3548 }
3549
3550 if (options.auth && !this.getHeader('Authorization')) {
3551 //basic auth
3552 this.setHeader('Authorization', 'Basic ' +
3553 Buffer.from(options.auth).toString('base64'));
3554 }
3555
3556 if (method === 'GET' ||
3557 method === 'HEAD' ||
3558 method === 'DELETE' ||
3559 method === 'OPTIONS' ||
3560 method === 'CONNECT') {
3561 self.useChunkedEncodingByDefault = false;
3562 } else {
3563 self.useChunkedEncodingByDefault = true;
3564 }
3565
3566 if (Array.isArray(options.headers)) {
3567 self._storeHeader(self.method + ' ' + self.path + ' HTTP/1.1\r\n',
3568 options.headers);
3569 } else if (self.getHeader('expect')) {
3570 self._storeHeader(self.method + ' ' + self.path + ' HTTP/1.1\r\n',
3571 self._renderHeaders());
3572 }
3573
3574 var called = false;
3575 if (self.socketPath) {
3576 self._last = true;
3577 self.shouldKeepAlive = false;
3578 const optionsPath = {
3579 path: self.socketPath
3580 };
3581 const newSocket = self.agent.createConnection(optionsPath, oncreate);
3582 if (newSocket && !called) {
3583 called = true;
3584 self.onSocket(newSocket);
3585 } else {
3586 return;
3587 }
3588 } else if (self.agent) {
3589 // If there is an agent we should default to Connection:keep-alive,
3590 // but only if the Agent will actually reuse the connection!
3591 // If it's not a keepAlive agent, and the maxSockets==Infinity, then
3592 // there's never a case where this socket will actually be reused
3593 if (!self.agent.keepAlive && !Number.isFinite(self.agent.maxSockets)) {
3594 self._last = true;
3595 self.shouldKeepAlive = false;
3596 } else {
3597 self._last = false;
3598 self.shouldKeepAlive = true;
3599 }
3600 self.agent.addRequest(self, options);
3601 } else {
3602 // No agent, default to Connection:close.
3603 self._last = true;
3604 self.shouldKeepAlive = false;
3605 if (typeof options.createConnection === 'function') {
3606 const newSocket = options.createConnection(options, oncreate);
3607 if (newSocket && !called) {
3608 called = true;
3609 self.onSocket(newSocket);
3610 } else {
3611 return;
3612 }
3613 } else {
3614 debug('CLIENT use net.createConnection', options);
3615 self.onSocket(net.createConnection(options));
3616 }
3617 }
3618
3619 function oncreate(err, socket) {
3620 if (called)
3621 return;
3622 called = true;
3623 if (err) {
3624 process.nextTick(function() {
3625 self.emit('error', err);
3626 });
3627 return;
3628 }
3629 self.onSocket(socket);
3630 self._deferToConnect(null, null, function() {
3631 self._flush();
3632 self = null;
3633 });
3634 }
3635
3636 self._deferToConnect(null, null, function() {
3637 self._flush();
3638 self = null;
3639 });
3640
3641 this._ended = false;
3642}, request=function (options, cb) {
3643 return new ClientRequest(options, cb);
3644}, get=function (options, cb) {
3645 var req = exports.request(options, cb);
3646 req.end();
3647 return req;
3648}, _connectionListener=function connectionListener(socket) {
3649 var self = this;
3650 var outgoing = [];
3651 var incoming = [];
3652 var outgoingData = 0;
3653
3654 function updateOutgoingData(delta) {
3655 // `outgoingData` is an approximate amount of bytes queued through all
3656 // inactive responses. If more data than the high watermark is queued - we
3657 // need to pause TCP socket/HTTP parser, and wait until the data will be
3658 // sent to the client.
3659 outgoingData += delta;
3660 if (socket._paused && outgoingData < socket._writableState.highWaterMark)
3661 return socketOnDrain();
3662 }
3663
3664 function abortIncoming() {
3665 while (incoming.length) {
3666 var req = incoming.shift();
3667 req.emit('aborted');
3668 req.emit('close');
3669 }
3670 // abort socket._httpMessage ?
3671 }
3672
3673 function serverSocketCloseListener() {
3674 debug('server socket close');
3675 // mark this parser as reusable
3676 if (this.parser) {
3677 freeParser(this.parser, null, this);
3678 }
3679
3680 abortIncoming();
3681 }
3682
3683 debug('SERVER new http connection');
3684
3685 httpSocketSetup(socket);
3686
3687 // If the user has added a listener to the server,
3688 // request, or response, then it's their responsibility.
3689 // otherwise, destroy on timeout by default
3690 if (self.timeout)
3691 socket.setTimeout(self.timeout);
3692 socket.on('timeout', function() {
3693 var req = socket.parser && socket.parser.incoming;
3694 var reqTimeout = req && !req.complete && req.emit('timeout', socket);
3695 var res = socket._httpMessage;
3696 var resTimeout = res && res.emit('timeout', socket);
3697 var serverTimeout = self.emit('timeout', socket);
3698
3699 if (!reqTimeout && !resTimeout && !serverTimeout)
3700 socket.destroy();
3701 });
3702
3703 var parser = parsers.alloc();
3704 parser.reinitialize(HTTPParser.REQUEST);
3705 parser.socket = socket;
3706 socket.parser = parser;
3707 parser.incoming = null;
3708
3709 // Propagate headers limit from server instance to parser
3710 if (typeof this.maxHeadersCount === 'number') {
3711 parser.maxHeaderPairs = this.maxHeadersCount << 1;
3712 } else {
3713 // Set default value because parser may be reused from FreeList
3714 parser.maxHeaderPairs = 2000;
3715 }
3716
3717 socket.addListener('error', socketOnError);
3718 socket.addListener('close', serverSocketCloseListener);
3719 parser.onIncoming = parserOnIncoming;
3720 socket.on('end', socketOnEnd);
3721 socket.on('data', socketOnData);
3722
3723 // We are consuming socket, so it won't get any actual data
3724 socket.on('resume', onSocketResume);
3725 socket.on('pause', onSocketPause);
3726
3727 socket.on('drain', socketOnDrain);
3728
3729 // Override on to unconsume on `data`, `readable` listeners
3730 socket.on = socketOnWrap;
3731
3732 var external = socket._handle._externalStream;
3733 if (external) {
3734 parser._consumed = true;
3735 parser.consume(external);
3736 }
3737 external = null;
3738 parser[kOnExecute] = onParserExecute;
3739
3740 // TODO(isaacs): Move all these functions out of here
3741 function socketOnError(e) {
3742 // Ignore further errors
3743 this.removeListener('error', socketOnError);
3744 this.on('error', () => {});
3745
3746 if (!self.emit('clientError', e, this))
3747 this.destroy(e);
3748 }
3749
3750 function socketOnData(d) {
3751 assert(!socket._paused);
3752 debug('SERVER socketOnData %d', d.length);
3753 var ret = parser.execute(d);
3754
3755 onParserExecuteCommon(ret, d);
3756 }
3757
3758 function onParserExecute(ret, d) {
3759 socket._unrefTimer();
3760 debug('SERVER socketOnParserExecute %d', ret);
3761 onParserExecuteCommon(ret, undefined);
3762 }
3763
3764 function onParserExecuteCommon(ret, d) {
3765 if (ret instanceof Error) {
3766 debug('parse error');
3767 socketOnError.call(socket, ret);
3768 } else if (parser.incoming && parser.incoming.upgrade) {
3769 // Upgrade or CONNECT
3770 var bytesParsed = ret;
3771 var req = parser.incoming;
3772 debug('SERVER upgrade or connect', req.method);
3773
3774 if (!d)
3775 d = parser.getCurrentBuffer();
3776
3777 socket.removeListener('data', socketOnData);
3778 socket.removeListener('end', socketOnEnd);
3779 socket.removeListener('close', serverSocketCloseListener);
3780 unconsume(parser, socket);
3781 parser.finish();
3782 freeParser(parser, req, null);
3783 parser = null;
3784
3785 var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade';
3786 if (self.listenerCount(eventName) > 0) {
3787 debug('SERVER have listener for %s', eventName);
3788 var bodyHead = d.slice(bytesParsed, d.length);
3789
3790 // TODO(isaacs): Need a way to reset a stream to fresh state
3791 // IE, not flowing, and not explicitly paused.
3792 socket._readableState.flowing = null;
3793 self.emit(eventName, req, socket, bodyHead);
3794 } else {
3795 // Got upgrade header or CONNECT method, but have no handler.
3796 socket.destroy();
3797 }
3798 }
3799
3800 if (socket._paused && socket.parser) {
3801 // onIncoming paused the socket, we should pause the parser as well
3802 debug('pause parser');
3803 socket.parser.pause();
3804 }
3805 }
3806
3807 function socketOnEnd() {
3808 var socket = this;
3809 var ret = parser.finish();
3810
3811 if (ret instanceof Error) {
3812 debug('parse error');
3813 socketOnError.call(socket, ret);
3814 return;
3815 }
3816
3817 if (!self.httpAllowHalfOpen) {
3818 abortIncoming();
3819 if (socket.writable) socket.end();
3820 } else if (outgoing.length) {
3821 outgoing[outgoing.length - 1]._last = true;
3822 } else if (socket._httpMessage) {
3823 socket._httpMessage._last = true;
3824 } else {
3825 if (socket.writable) socket.end();
3826 }
3827 }
3828
3829
3830 // The following callback is issued after the headers have been read on a
3831 // new message. In this callback we setup the response object and pass it
3832 // to the user.
3833
3834 socket._paused = false;
3835 function socketOnDrain() {
3836 var needPause = outgoingData > socket._writableState.highWaterMark;
3837
3838 // If we previously paused, then start reading again.
3839 if (socket._paused && !needPause) {
3840 socket._paused = false;
3841 if (socket.parser)
3842 socket.parser.resume();
3843 socket.resume();
3844 }
3845 }
3846
3847 function parserOnIncoming(req, shouldKeepAlive) {
3848 incoming.push(req);
3849
3850 // If the writable end isn't consuming, then stop reading
3851 // so that we don't become overwhelmed by a flood of
3852 // pipelined requests that may never be resolved.
3853 if (!socket._paused) {
3854 var needPause = socket._writableState.needDrain ||
3855 outgoingData >= socket._writableState.highWaterMark;
3856 if (needPause) {
3857 socket._paused = true;
3858 // We also need to pause the parser, but don't do that until after
3859 // the call to execute, because we may still be processing the last
3860 // chunk.
3861 socket.pause();
3862 }
3863 }
3864
3865 var res = new ServerResponse(req);
3866 res._onPendingData = updateOutgoingData;
3867
3868 res.shouldKeepAlive = shouldKeepAlive;
3869 ;
3870 ;
3871 ;
3872
3873 if (socket._httpMessage) {
3874 // There are already pending outgoing res, append.
3875 outgoing.push(res);
3876 } else {
3877 res.assignSocket(socket);
3878 }
3879
3880 // When we're finished writing the response, check if this is the last
3881 // response, if so destroy the socket.
3882 res.on('finish', resOnFinish);
3883 function resOnFinish() {
3884 // Usually the first incoming element should be our request. it may
3885 // be that in the case abortIncoming() was called that the incoming
3886 // array will be empty.
3887 assert(incoming.length === 0 || incoming[0] === req);
3888
3889 incoming.shift();
3890
3891 // if the user never called req.read(), and didn't pipe() or
3892 // .resume() or .on('data'), then we call req._dump() so that the
3893 // bytes will be pulled off the wire.
3894 if (!req._consuming && !req._readableState.resumeScheduled)
3895 req._dump();
3896
3897 res.detachSocket(socket);
3898
3899 if (res._last) {
3900 socket.destroySoon();
3901 } else {
3902 // start sending the next message
3903 var m = outgoing.shift();
3904 if (m) {
3905 m.assignSocket(socket);
3906 }
3907 }
3908 }
3909
3910 if (req.headers.expect !== undefined &&
3911 (req.httpVersionMajor == 1 && req.httpVersionMinor == 1)) {
3912 if (continueExpression.test(req.headers.expect)) {
3913 res._expect_continue = true;
3914
3915 if (self.listenerCount('checkContinue') > 0) {
3916 self.emit('checkContinue', req, res);
3917 } else {
3918 res.writeContinue();
3919 self.emit('request', req, res);
3920 }
3921 } else {
3922 if (self.listenerCount('checkExpectation') > 0) {
3923 self.emit('checkExpectation', req, res);
3924 } else {
3925 res.writeHead(417);
3926 res.end();
3927 }
3928 }
3929 } else {
3930 self.emit('request', req, res);
3931 }
3932 return false; // Not a HEAD response. (Not even a response!)
3933 }
3934}, Server=function Server(requestListener) {
3935 if (!(this instanceof Server)) return new Server(requestListener);
3936 net.Server.call(this, { allowHalfOpen: true });
3937
3938 if (requestListener) {
3939 this.addListener('request', requestListener);
3940 }
3941
3942 /* eslint-disable max-len */
3943 // Similar option to this. Too lazy to write my own docs.
3944 // http://www.squid-cache.org/Doc/config/half_closed_clients/
3945 // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F
3946 /* eslint-enable max-len */
3947 this.httpAllowHalfOpen = false;
3948
3949 this.addListener('connection', connectionListener);
3950
3951 this.timeout = 2 * 60 * 1000;
3952
3953 this._pendingResponseData = 0;
3954}, createServer=function (requestListener) {
3955 return new Server(requestListener);
3956}, Client=function deprecated() {
3957 warned = exports.printDeprecationMessage(msg, warned, deprecated);
3958 return fn.apply(this, arguments);
3959 }, createClient=function deprecated() {
3960 warned = exports.printDeprecationMessage(msg, warned, deprecated);
3961 return fn.apply(this, arguments);
3962 }, agentClass=function Agent(options) {
3963 if (!(this instanceof Agent))
3964 return new Agent(options);
3965
3966 EventEmitter.call(this);
3967
3968 var self = this;
3969
3970 self.defaultPort = 80;
3971 self.protocol = 'http:';
3972
3973 self.options = util._extend({}, options);
3974
3975 // don't confuse net and make it think that we're connecting to a pipe
3976 self.options.path = null;
3977 self.requests = {};
3978 self.sockets = {};
3979 self.freeSockets = {};
3980 self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;
3981 self.keepAlive = self.options.keepAlive || false;
3982 self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;
3983 self.maxFreeSockets = self.options.maxFreeSockets || 256;
3984
3985 self.on('free', function(socket, options) {
3986 var name = self.getName(options);
3987 debug('agent.on(free)', name);
3988
3989 if (socket.writable &&
3990 self.requests[name] && self.requests[name].length) {
3991 self.requests[name].shift().onSocket(socket);
3992 if (self.requests[name].length === 0) {
3993 // don't leak
3994 delete self.requests[name];
3995 }
3996 } else {
3997 // If there are no pending requests, then put it in
3998 // the freeSockets pool, but only if we're allowed to do so.
3999 var req = socket._httpMessage;
4000 if (req &&
4001 req.shouldKeepAlive &&
4002 socket.writable &&
4003 self.keepAlive) {
4004 var freeSockets = self.freeSockets[name];
4005 var freeLen = freeSockets ? freeSockets.length : 0;
4006 var count = freeLen;
4007 if (self.sockets[name])
4008 count += self.sockets[name].length;
4009
4010 if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {
4011 socket.destroy();
4012 } else {
4013 freeSockets = freeSockets || [];
4014 self.freeSockets[name] = freeSockets;
4015 socket.setKeepAlive(true, self.keepAliveMsecs);
4016 socket.unref();
4017 socket._httpMessage = null;
4018 self.removeSocket(socket, options);
4019 freeSockets.push(socket);
4020 }
4021 } else {
4022 socket.destroy();
4023 }
4024 }
4025 });
4026}, $ref=$["socket"]["_httpMessage"]["agent"], _started=true, href=http://notification.treadquants.com/init/settings, $ref=$["socket"]["_httpMessage"], ntick=true, $ref=$, originalHost=notification.treadquants.com, originalHostHeaderName=host, $ref=$, _destdata=true, _ended=true, _callbackCalled=true, toJSON=function responseToJSON() {
4027 var self = this
4028 return {
4029 statusCode: self.statusCode,
4030 body: self.body,
4031 headers: self.headers,
4032 request: requestToJSON.call(self.request)
4033 }
4034}, $ref=$["headers"], read=function (n) {
4035 debug('read', n);
4036 n = parseInt(n, 10);
4037 var state = this._readableState;
4038 var nOrig = n;
4039
4040 if (n !== 0)
4041 state.emittedReadable = false;
4042
4043 // if we're doing read(0) to trigger a readable event, but we
4044 // already have a bunch of data in the buffer, then just trigger
4045 // the 'readable' event and move on.
4046 if (n === 0 &&
4047 state.needReadable &&
4048 (state.length >= state.highWaterMark || state.ended)) {
4049 debug('read: emitReadable', state.length, state.ended);
4050 if (state.length === 0 && state.ended)
4051 endReadable(this);
4052 else
4053 emitReadable(this);
4054 return null;
4055 }
4056
4057 n = howMuchToRead(n, state);
4058
4059 // if we've ended, and we're now clear, then finish it up.
4060 if (n === 0 && state.ended) {
4061 if (state.length === 0)
4062 endReadable(this);
4063 return null;
4064 }
4065
4066 // All the actual chunk generation logic needs to be
4067 // *below* the call to _read. The reason is that in certain
4068 // synthetic stream cases, such as passthrough streams, _read
4069 // may be a completely synchronous operation which may change
4070 // the state of the read buffer, providing enough data when
4071 // before there was *not* enough.
4072 //
4073 // So, the steps are:
4074 // 1. Figure out what the state of things will be after we do
4075 // a read from the buffer.
4076 //
4077 // 2. If that resulting state will trigger a _read, then call _read.
4078 // Note that this may be asynchronous, or synchronous. Yes, it is
4079 // deeply ugly to write APIs this way, but that still doesn't mean
4080 // that the Readable class should behave improperly, as streams are
4081 // designed to be sync/async agnostic.
4082 // Take note if the _read call is sync or async (ie, if the read call
4083 // has returned yet), so that we know whether or not it's safe to emit
4084 // 'readable' etc.
4085 //
4086 // 3. Actually pull the requested chunks out of the buffer and return.
4087
4088 // if we need a readable event, then we need to do some reading.
4089 var doRead = state.needReadable;
4090 debug('need readable', doRead);
4091
4092 // if we currently have less than the highWaterMark, then also read some
4093 if (state.length === 0 || state.length - n < state.highWaterMark) {
4094 doRead = true;
4095 debug('length less than watermark', doRead);
4096 }
4097
4098 // however, if we've ended, then there's no point, and if we're already
4099 // reading, then it's unnecessary.
4100 if (state.ended || state.reading) {
4101 doRead = false;
4102 debug('reading or ended', doRead);
4103 } else if (doRead) {
4104 debug('do read');
4105 state.reading = true;
4106 state.sync = true;
4107 // if the length is currently zero, then we *need* a readable event.
4108 if (state.length === 0)
4109 state.needReadable = true;
4110 // call internal read method
4111 this._read(state.highWaterMark);
4112 state.sync = false;
4113 // If _read pushed data synchronously, then `reading` will be false,
4114 // and we need to re-evaluate how much data we can return to the user.
4115 if (!state.reading)
4116 n = howMuchToRead(nOrig, state);
4117 }
4118
4119 var ret;
4120 if (n > 0)
4121 ret = fromList(n, state);
4122 else
4123 ret = null;
4124
4125 if (ret === null) {
4126 state.needReadable = true;
4127 n = 0;
4128 } else {
4129 state.length -= n;
4130 }
4131
4132 if (state.length === 0) {
4133 // If we have nothing in the buffer, then we want to know
4134 // as soon as we *do* get something into the buffer.
4135 if (!state.ended)
4136 state.needReadable = true;
4137
4138 // If we tried to read() past the EOF, then emit end on the next tick.
4139 if (nOrig !== n && state.ended)
4140 endReadable(this);
4141 }
4142
4143 if (ret !== null)
4144 this.emit('data', ret);
4145
4146 return ret;
4147}, body=<html>
4148<head><title>503 Service Temporarily Unavailable</title></head>
4149<body bgcolor="white">
4150<center><h1>503 Service Temporarily Unavailable</h1></center>
4151<hr><center>nginx/1.9.15</center>
4152</body>
4153</html>